diff --git a/parser/parser-elastic/elastic_parser_input_wien2k.py b/parser/parser-elastic/elastic_parser_input_wien2k.py
index 93a17d3f2132b28c5a0e23a83ce620abb666dbd2..6ea9ed5bc2376938b9a9df268a8983290758a16b 100644
--- a/parser/parser-elastic/elastic_parser_input_wien2k.py
+++ b/parser/parser-elastic/elastic_parser_input_wien2k.py
@@ -1,4 +1,18 @@
-# Copyright 2017-2018 Lorenzo Pardini
+from builtins import object
+import setup_paths
+from nomadcore.simple_parser import mainFunction, CachingLevel
+from nomadcore.simple_parser import SimpleMatcher as SM
+from nomadcore.local_meta_info import loadJsonFile, InfoKindEl
+import os, sys, json, logging
+import numpy as np
+import ase.geometry
+
+
+################################################################
+# This is the subparser for the main WIEN2k input file (.struct)
+################################################################
+
+# Copyright 2016-2018 Daria M. Tomecka, Fawzi Mohamed
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -12,68 +26,114 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import xml.sax
-import logging
-import numpy as np
-from nomadcore.unit_conversion.unit_conversion import convert_unit_function
-from nomadcore.unit_conversion.unit_conversion import convert_unit
-from nomadcore.unit_conversion import unit_conversion
-
-class InputHandler(xml.sax.handler.ContentHandler):
-
-    def __init__(self, backend):
-        self.backend = backend
-        self.inputSectionGIndex = -1
-        self.basevect = []
-        self.latticeDummy = ''
-        self.CurrentData = ''
-        self.atomCoor = []
-        self.atomCoorDummy = []
-        self.speciesfileDummy = ''
-        self.speciesfile = []
-        self.scale = 1
-        self.cell = []
-        self.cellDummy = []
-
-    def endDocument(self):
-        bohr_to_m = convert_unit(1, "bohr", "m")
-        for i in range(0,len(self.cellDummy)):
-            for j in range(0,3):
-                self.cell[i].append(float(self.cellDummy[i][j])*self.scale*bohr_to_m)
-        self.backend.addValue("lattice_vectors", self.cell)
-        self.backend.addValue('atom_positions',self.atomCoor)
-        for i in range(0,len(self.atomCoor)):
-            self.speciesfile.append(self.speciesfileDummy)
-        self.backend.addValue("atom_labels", self.speciesfile)
-    def startElement(self, name, attrs):
-        self.CurrentData = name
-        if name == "crystal":
-            self.scale = float(attrs.getValue('scale'))
-        elif name == 'species':
-            self.speciesfileDummy = attrs.getValue('speciesfile')[:-4]
-        elif name == 'atom':
-            self.atomCoorDummy = attrs.getValue('coord').split()
-            for j in range(0,3):
-               self.atomCoorDummy[j]=float(self.atomCoorDummy[j])
-            self.atomCoor.append(self.atomCoorDummy)
-        else:
-            pass
-
-    def endElement(self, name):
+__author__ = "Daria M. Tomecka"
+__maintainer__ = "Daria M. Tomecka"
+__email__ = "tomeckadm@gmail.com;"
+__date__ = "15/05/2017"
+
+########### Modified for elastic by Lorenzo Pardini ##################
+
+class Wien2kStructContext(object):
+    """context for wien2k struct parser"""
+
+    def __init__(self):
+        self.parser = None
+
+    def initialize_values(self):
+        """allows to reset values if the same superContext is used to parse different files"""
         pass
 
-    def characters(self, content):
-        if self.CurrentData == 'basevect':
-            self.latticeDummy = content
-            lattice = self.latticeDummy.split()
-            if lattice != []:
-                self.cellDummy.append(lattice)
-                self.cell.append([])
-        else:
-            pass
-
-def parseInput(inF, backend):
-    handler = InputHandler(backend)
-    logging.error("will parse")
-    xml.sax.parse(inF, handler)
-    logging.error("did parse")
+    def startedParsing(self, path, parser):
+        """called when parsing starts"""
+        self.parser = parser
+        # allows to reset values if the same superContext is used to parse different files
+        self.initialize_values()
+
+    def onClose_section_system(self, backend, gIndex, section):
+        #   unit_cell
+        unit_cell_params = []
+        for i in ['a', 'b', 'c']:
+            uci = section['x_elastic_wien2k_unit_cell_param_' + i]
+            #if uci is not None:
+            unit_cell_params.append(uci[0])
+        for i in ['alfa', 'beta', 'gamma']:
+            uci = section['x_elastic_wien2k_angle_between_unit_axis_' + i]
+            # if uci is not None:
+            unit_cell_params.append(uci[0])
+
+        unit_cell = ase.geometry.cellpar_to_cell(unit_cell_params)
+        backend.addArrayValues('lattice_vectors', unit_cell)
+#        backend.addArrayValues("configuration_periodic_dimensions", np.ones(3, dtype=bool))
+
+        equiv_atoms = section["x_elastic_wien2k_section_equiv_atoms"]
+        #logging.error("section: %s", section)
+        labels = []
+        pos = []
+
+        for eqAtoms in equiv_atoms:
+            label = eqAtoms["x_elastic_wien2k_atom_name"][0]
+            x = eqAtoms["x_elastic_wien2k_atom_pos_x"]
+            y = eqAtoms["x_elastic_wien2k_atom_pos_y"]
+            z = eqAtoms["x_elastic_wien2k_atom_pos_z"]
+            #logging.error("equiv_atoms: %s x %s y %s z %s",eqAtoms, x, y, z)
+            if len(x) != len(y) or len(x) != len(z):
+                raise Exception("incorrect parsing, different number of x,y,z components")
+            groupPos = [[x[i],y[i],z[i]] for i in range(len(x))]
+            nAt = len(groupPos)
+            labels += [label for i in range(nAt)]
+            pos += groupPos
+        backend.addValue("atom_labels", labels)
+
+        backend.addArrayValues('atom_positions', np.asarray(pos))
+
+
+
+# description of the input
+def buildStructureMatchers():
+    return SM(
+    name = 'root',
+    weak = True,
+    startReStr = "",
+    sections = ["section_run", "section_system"],
+    subMatchers = [
+        SM(name = 'systemName',
+           startReStr = r"(?P<x_elastic_wien2k_system_nameIn>.*)"),
+        SM(r"\w+\s*LATTICE,NONEQUIV\.ATOMS.\s*(?P<x_elastic_wien2k_nonequiv_atoms>[0-9]+)"),
+        SM(r"(?P<x_elastic_wien2k_calc_mode>.*)"),
+       # SM(r"\s*(?P<x_wien2k_unit_cell_param_a>[-+0-9.eEdD]+)\s*(?P<x_wien2k_unit_cell_param_b>[-+0-9.eEdD]+)\s*(?P<x_wien2k_unit_cell_param_c>[-+0-9.eEdD]+)\s*(?P<x_wien2k_angle_between_unit_axis_alfa>[-+0-9.eEdD]{9})\s*(?P<x_wien2k_angle_between_unit_axis_beta>[-+0-9.eEdD]{9})\s*(?P<x_wien2k_angle_between_unit_axis_gamma>[-+0-9.eEdD]+)"),
+        SM(r"\s*(?P<x_elastic_wien2k_unit_cell_param_a__angstrom>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_elastic_wien2k_unit_cell_param_b__angstrom>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_elastic_wien2k_unit_cell_param_c__angstrom>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_elastic_wien2k_angle_between_unit_axis_alfa>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_elastic_wien2k_angle_between_unit_axis_beta>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_elastic_wien2k_angle_between_unit_axis_gamma>[-+]?[0-9]*\.\d*)"),
+        SM(r"\s*ATOM\s*[-0-9]+:\s*X=(?P<x_elastic_wien2k_atom_pos_x__angstrom>[-+0-9.eEdD]+)\s*Y=(?P<x_elastic_wien2k_atom_pos_y__angstrom>[-+0-9.eEdD]+)\s*Z=(?P<x_elastic_wien2k_atom_pos_z__angstrom>[-+0-9.eEdD]+)",
+           repeats=True,
+           sections=["x_elastic_wien2k_section_equiv_atoms"],
+           subMatchers=[
+               SM(r"\s*[-0-9]+:\s*X=(?P<x_elastic_wien2k_atom_pos_x__angstrom>[-+0-9.eEdD]+)\s*Y=(?P<x_elastic_wien2k_atom_pos_y__angstrom>[-+0-9.eEdD]+)\s*Z=(?P<x_elastic_wien2k_atom_pos_z__angstrom>[-+0-9.eEdD]+)",
+                  repeats=True
+              ),
+    #           SM(r"\s*(?P<atom>.{10})\s*NPT=\s*(?P<NPT>[0-9]+)\s*R0=(?P<r0>[0-9.]+)\s*RMT=\s*(?P<rmt>[0-9.]+)\s*Z:\s*(?P<z>[0-9.]+)",)
+               SM(r"\s*(?P<x_elastic_wien2k_atom_name>^.+)\s*NPT=\s*(?P<x_elastic_wien2k_NPT>[0-9]+)\s*R0=(?P<x_elastic_wien2k_R0>[0-9.]+)\s*RMT=\s*(?P<x_elastic_wien2k_RMT>[0-9.]+)\s*Z:\s*(?P<x_elastic_wien2k_atomic_number_Z>[0-9.]+)",)
+           ]
+       )
+    ])
+
+def get_cachingLevelForMetaName(metaInfoEnv, CachingLvl):
+    """Sets the caching level for the metadata.
+
+    Args:
+        metaInfoEnv: metadata which is an object of the class InfoKindEnv in nomadcore.local_meta_info.py.
+        CachingLvl: Sets the CachingLevel for the sections k_band, run, and single_configuration_calculation.
+            This allows to run the parser without opening new sections.
+
+    Returns:
+        Dictionary with metaname as key and caching level as value.
+    """
+    # manually adjust caching of metadata
+    cachingLevelForMetaName = {
+                               'section_run': CachingLvl,
+                               'section_system': CachingLvl
+                              }
+    cachingLevelForMetaName["x_elastic_wien2k_system_nameIn"] = CachingLevel.ForwardAndCache
+    cachingLevelForMetaName["x_elastic_wien2k_section_equiv_atoms"] = CachingLevel.ForwardAndCache
+    cachingLevelForMetaName["atom_labels"] = CachingLevel.ForwardAndCache
+    return cachingLevelForMetaName
+
+# loading metadata from nomad-meta-info/meta_info/nomad_meta_info/fhi_aims.nomadmetainfo.json
diff --git a/parser/parser-elastic/parser_elastic.py b/parser/parser-elastic/parser_elastic.py
index 5dc30eb10c31f088150ce269d675142bab343c63..1b2c4c0798cc1e52075c9619213dfd95f2c6e893 100644
--- a/parser/parser-elastic/parser_elastic.py
+++ b/parser/parser-elastic/parser_elastic.py
@@ -17,7 +17,7 @@ import setup_paths
 import numpy as np
 from nomadcore.unit_conversion.unit_conversion import convert_unit
 from nomadcore.parser_backend import JsonParseEventsWriterBackend
-from nomadcore.simple_parser import mainFunction
+from nomadcore.simple_parser import mainFunction, AncillaryParser, CachingLevel
 from nomadcore.simple_parser import SimpleMatcher as SM
 from nomadcore.local_meta_info import loadJsonFile, InfoKindEl
 from nomadcore.unit_conversion import unit_conversion
@@ -36,7 +36,6 @@ class SampleContext(object):
 
     def __init__(self): 
 #        self.mainFileUri = sys.argv[1]  #exciting !!!!!!LOCAL HOME!!!!!!!!             OKOKOKOK
-#        print("self.mainFileUri===init==",self.mainFileUri)
         self.mainFileUri = sys.argv[2]  #exciting !!! FOR NOMAD URI nmd:// or sbt -> zip file!!!!!!!!   OKOKKOOK
         self.parser = None
         self.mainFilePath = None
@@ -50,7 +49,7 @@ class SampleContext(object):
 
     def initialize_values(self):
         """allows to reset values if the same superContext is used to parse different files"""
-        pass
+        self.metaInfoEnv = self.parser.parserBuilder.metaInfoEnv
 
     def onOpen_section_system(self, backend, gIndex, section):
         self.secSystemIndex = gIndex
@@ -69,36 +68,32 @@ class SampleContext(object):
         backend.addValue('program_version', '1.0')
 
     def onClose_section_system(self, backend, gIndex, section):
-#        print("quiiiii")
         backend.addArrayValues('configuration_periodic_dimensions', np.asarray([True, True, True]))
         self.SGN = int(section["x_elastic_space_group_number"][0])
         mainFile = self.parser.fIn.fIn.name
         dirPath = os.path.dirname(mainFile)           #####exciting sbt -> zip file####     YES ?????????? sure???? check first    OKOKOKKO
         self.mainFile = self.parser.fIn.name             
         self.mainFilePath = self.mainFile[0:-12]   
-#        print("self.mainFileUri=",self.mainFileUri)
 #        dirPath = self.mainFileUri[0:-12]   #####exciting LOCAL HOME or from NOMAD URI nmd://  #######   YES                      OKOKOKOK
-#        print("dirPath===",dirPath)
-#        print("os.listdir(dirPath)=",os.listdir(dirPath))
-#        for files in os.listdir(self.mainFilePath):
         for files in os.listdir(dirPath):
             if files[-3:] == "xml":
                 inputFile = files
-#                print("Exself.mainFilePath=",self.mainFilePath)
-#                print("inputFile=",inputFile)
                 os.chdir(self.mainFilePath)
                 with open(inputFile) as f:
                     elastic_parser_input_exciting.parseInput(f, backend)
             elif files[-6:] == "struct":
                 inputFile = files
-#                print("Wiself.mainFilePath=",self.mainFilePath)
-#                print("inputFile=",inputFile)
                 os.chdir(self.mainFilePath)
-                with open(inputFile) as g:
-                    while 1:
-                        s = g.readline()
-                        if not s: break
-                        s = s.strip()
+                structSuperContext = elastic_parser_input_wien2k.Wien2kStructContext()
+                structParser = AncillaryParser(
+                    fileDescription = elastic_parser_input_wien2k.buildStructureMatchers(),
+                    parser = self.parser,
+                    cachingLevelForMetaName = elastic_parser_input_wien2k.get_cachingLevelForMetaName(self.metaInfoEnv, CachingLevel.PreOpenedIgnore),
+                    superContext = structSuperContext)
+
+                with open(inputFile) as fIn:
+                    structParser.parseFile(fIn)
+
             elif files[-3:] == ".in":         ##### so far it works only for Rostam's calculations
                 if files != "ElaStic_2nd.in":
                     inputFile = files
@@ -109,8 +104,6 @@ class SampleContext(object):
                     coord = []
                     lattice = []
                     check = False
-#                    alat = 1
-#                    print("inputFile=",inputFile)
                     os.chdir(self.mainFilePath)
                     with open(inputFile) as g:
                         fromB = unit_conversion.convert_unit_function("bohr", "m")
@@ -119,11 +112,7 @@ class SampleContext(object):
                             if not s: break
                             s = s.strip()
                             s = s.split()
-#                            print("s===",s)
-#                            print("s[0]===",s[0])
-#                            print("len(s)===",len(s))
                             if s[0] == "ibrav":         ####### Rostam's: ibrav always 0
-#                                print("s[0]===",s[0])
                                 ibrav = s[2]
                             elif s[0] == "celldm(1)":
                                 alat = float(s[2])
@@ -137,31 +126,9 @@ class SampleContext(object):
                                     lattice.append([fromB(alat*float(s[0])),fromB(alat*float(s[1])),fromB(alat*float(s[2]))])
                                 else:
                                     pass
-#                                try: 
-#                                    float(s[0])                   
-#                                    return check = True
-#                                except:
-#                                    check = False
-#                                print("check===",check)
-#                                for i in range(3):
-#                                try:
-#                                    lattice.append(float(s[0]),float(s[1]),float(s[2]))
-#                                    print("qui????")
-#                                except:
-#                                    print("quo???")
-                    #                pass    
-#                        print("lattice===",lattice)
+
                         for i in range(len(atom_labels)):
                             coord.append([posX[i],posY[i],posZ[i]])
-#                            for j in range(3):
-#                            coord[i][0] = posX[i]
-#                            coord[i][1] = posY[i]
-#                            coord[i][2] = posZ[i]
-#                        print("alat===",alat)
-#                        print("atoms===",atoms)
-#                        print("posX===",posX)
-#                        print("posY===",posY)
-#                        print("posZ===",posZ)
                         cell = [[lattice[0][0],lattice[0][1],lattice[0][2]],
                                 [lattice[1][0],lattice[1][1],lattice[1][2]],
                                 [lattice[2][0],lattice[2][1],lattice[2][2]]]
@@ -172,29 +139,18 @@ class SampleContext(object):
                         backend.addArrayValues('atom_positions', np.asarray(coord))
                         backend.addArrayValues('atom_labels', np.asarray(atom_labels))
                         backend.addValue("simulation_cell", cell) 
-#                        print("coord===",coord)
-#    def is_number(s):
-#        try:
-#            float(s)
-#            return True
-#        except ValueError:
-#            return False
 
     def onClose_section_method(self, backend, gIndex, section):
-#        print("quoooo")
         ha_per_joule = convert_unit(1, "hartree", "J")
         giga = 10**9
         elCode = section['x_elastic_code']
         elasticGIndex = backend.openSection("section_single_configuration_calculation")
         self.mainFilePath = self.mainFileUri[0:-12]  
         questa = os.getcwd()
-#        print("questa===",questa)
-#        print("self.mainFilePath===",self.mainFilePath)
         mdr = float(section['x_elastic_max_lagrangian_strain'][0])
         ordr = int(section['x_elastic_elastic_constant_order'][0])
         nds = int(section['x_elastic_number_of_distorted_structures'][0])
         meth = section['x_elastic_calculation_method'][0]
-#        print("meth===",meth)
         polFit2 = (nds-1)/2
         polFit4 = polFit2 - 1
         polFit6 = polFit2 - 2
@@ -208,13 +164,7 @@ class SampleContext(object):
         polFit3Cross = polFit3 - 1
         polFit5Cross = polFit5 - 1
         ext_uri = []
-    #    os.chdir(self.mainFilePath)
 
-###################NEW###################
-#        for def_str in os.listdir():
-#            print("def_str=", def_str)
-
-##################END NEW################
         i = 1
         while 1:
             if (i<10):
@@ -233,7 +183,6 @@ class SampleContext(object):
         defNum = i - 1
         ECs = defNum
 
-###############ADDED BELOW###################
         for j in range(1, ECs+1):
             for i in range(1,nds+1):
                 if (j<10):
@@ -242,10 +191,8 @@ class SampleContext(object):
                             ext_uri.append(self.mainFilePath + 'Dst0' + str(j) + '/Dst0' + str(j) + '_0' + str(i) + '/INFO.OUT')
                         elif elCode[0] == 'WIEN':
                             ext_uri.append(self.mainFilePath + 'Dst0' + str(j) + '/Dst0' + str(j) + '_0' + str(i) + '/Dst0'+ str(j) + '_0' + str(i) + '_Converged.scf')
-#                            pass
                         elif elCode[0] == 'QUANTUM':
                             ext_uri.append(self.mainFilePath + 'Dst0' + str(j) + '/Dst0' + str(j) + '_0' + str(i) + '/Dst0'+ str(j) + '_0' + str(i) + '.out')
-#####################above: to be repeated below for the wien2k and QE################
                     else:
                         if elCode[0] == 'exciting':
                             ext_uri.append(self.mainFilePath + 'Dst0' + str(j) +  '/Dst0' + str(j) + '_' + str(i) + '/INFO.OUT')
@@ -274,49 +221,30 @@ class SampleContext(object):
             backend.addValue("calculation_to_calculation_kind", "source_calculation")
             backend.closeSection("section_calculation_to_calculation_refs", refGindex)
 
-##############ADDED ABOVE####################
-
         energy = []
         eta = []
         LagrStress = []
         LagrStress_dummy = []
         physStress = []
         physStress_dummy = []
-#        print("ECs===",ECs)
         for j in range(1, ECs+1):
             if (j<10):
                 Dstn = 'Dst0'+ str(j)
                 eta.append([])
                 energy.append([])
-#                LagrStress.append([])
                 LagrStress_dummy.append([])
                 physStress_dummy.append([])
             else:
                 Dstn = 'Dst' + str(j)
                 eta.append([])
                 energy.append([])
-#                LagrStress.append([])
                 LagrStress_dummy.append([])
                 physStress_dummy.append([])
 
-###############ADDED BELOW###################
-#
-#            cur_dir = os.getcwd() 
-#            print("cur_dir====", cur_dir)
-#
-##############ADDED ABOVE####################
-
             os.chdir(Dstn)
-
-#            cur_dir = os.getcwd()
-#            print("cur_dir=======", cur_dir)
-
             cur_dir = os.getcwd() 
-#            print("energy=", energy)
-#            print("elCode[0]===",elCode[0])
-#            print("meth===",meth)
+
             if elCode[0] == 'exciting':
-#                print("ooooooooooexciting")
                 try:
                    f = open(Dstn+'-Energy.dat', 'r')
                    while 1:
@@ -324,8 +252,6 @@ class SampleContext(object):
                       if not s: break
                       s = s.strip()
                       dummy_eta, dummy_energy = s.split()
-#                   print("dummy_eta=",dummy_eta)
-#                   print("dummy_energy=",dummy_energy)
                       eta[-1].append(float(dummy_eta))
                       energy[-1].append(float(dummy_energy)*ha_per_joule)
                    os.chdir('../')
@@ -338,8 +264,6 @@ class SampleContext(object):
                       if not s: break
                       s = s.strip()
                       dummy_eta, dummy_energy = s.split()
-#                   print("dummy_eta=",dummy_eta)
-#                   print("dummy_energy=",dummy_energy)
                       eta[-1].append(float(dummy_eta))
                       energy[-1].append(float(dummy_energy)*ha_per_joule)
                    os.chdir('../')
@@ -347,36 +271,28 @@ class SampleContext(object):
                    pass
 
             elif elCode[0] == 'WIEN': 
-#                print("oooooooooooowien2k")
                 f = open(Dstn+'_Energy.dat', 'r')
                 while 1:
                    s = f.readline()
                    if not s: break
                    s = s.strip()
                    dummy_eta, dummy_energy = s.split()
-#                   print("dummy_eta=",dummy_eta)
-#                   print("dummy_energy=",dummy_energy)
                    eta[-1].append(float(dummy_eta))
                    energy[-1].append(float(dummy_energy)*ha_per_joule)
                 os.chdir('../')
 
             elif (elCode[0] == 'QUANTUM' or elCode[0] == 'Quantum') and meth == 'Energy':
-#                print("oooooooooooowien2k")
                 f = open(Dstn+'_Energy.dat', 'r')
                 while 1:
                    s = f.readline()
                    if not s: break
                    s = s.strip()
                    dummy_eta, dummy_energy = s.split()
-#                   print("dummy_eta=",dummy_eta)
-#                   print("dummy_energy=",dummy_energy)
                    eta[-1].append(float(dummy_eta))
                    energy[-1].append(float(dummy_energy)*ha_per_joule)
-#                print("etaqui===",eta)
                 os.chdir('../')
 
             elif elCode[0] == 'QUANTUM' and meth == 'Stress':
-#                print("oooooooooooowien2k")
                 f = open(Dstn+'_Lagrangian-stress.dat', 'r')
                 while 1:
                    s = f.readline()
@@ -384,7 +300,6 @@ class SampleContext(object):
                    s = s.strip()
                    s = s.split()
                    if is_number(s[0]):
-#                   print("s===",s)
                        dummy_eta = s[0] 
                        dummy_LS1 = s[1]
                        dummy_LS2 = s[2]
@@ -392,12 +307,8 @@ class SampleContext(object):
                        dummy_LS4 = s[4]
                        dummy_LS5 = s[5]
                        dummy_LS6 = s[6]
-#                   print("dummy_eta=",dummy_eta)
-#                   print("dummy_energy=",dummy_energy)
                        eta[-1].append(float(dummy_eta))
                        LagrStress_dummy[-1].append([float(dummy_LS1),float(dummy_LS2),float(dummy_LS3),float(dummy_LS4),float(dummy_LS5),float(dummy_LS6)])
-#                for i in range(len(LagrStress_dummy[-1])):
-#                print("eta===",eta)                    
      
                 g = open(Dstn+'_Physical-stress.dat', 'r')
                 while 1:
@@ -406,19 +317,13 @@ class SampleContext(object):
                    s = s.strip()
                    s = s.split()
                    if is_number(s[0]):
-#                   print("s===",s)
-#                       dummy_eta = s[0]
                        dummy_PS1 = s[1]
                        dummy_PS2 = s[2]
                        dummy_PS3 = s[3]
                        dummy_PS4 = s[4]
                        dummy_PS5 = s[5]
                        dummy_PS6 = s[6]
-#                   print("dummy_eta=",dummy_eta)
-#                   print("dummy_energy=",dummy_energy)
-#                       eta[-1].append(float(dummy_eta))
                        physStress_dummy[-1].append([float(dummy_PS1),float(dummy_PS2),float(dummy_PS3),float(dummy_PS4),float(dummy_PS5),float(dummy_PS6)])
-#                print("physStr===",physStress)
                 os.chdir('../')
 
             else:
@@ -426,8 +331,6 @@ class SampleContext(object):
 
         defTyp = []
 
-#        cur_dir = os.getcwd()
-#        print("etta===", eta)
         f = open('Distorted_Parameters','r')
 
         while 1:
@@ -445,12 +348,7 @@ class SampleContext(object):
 
         f.close()
         prova = os.listdir('.')
-#        print("prova= ",prova)
         if 'Energy-vs-Strain' in prova:
-#        if my_file.is_dir():
-#            print("esiste! :-)")
-#        else:
-#            print("non esiste :-(")
             os.chdir('Energy-vs-Strain')
 
             d2E6_val = []
@@ -714,10 +612,8 @@ class SampleContext(object):
                     CrossVal5_eta[j].append(CrossVal_eta_tot[j][i-1][0])
                     CrossVal3_eta[j].append(CrossVal_eta_tot[j][i-1][1])
                     CrossVal1_eta[j].append(CrossVal_eta_tot[j][i-1][2])
-#                    print("CrossVal5_val===",CrossVal5_val)
             os.chdir('../')
 
-########################################################################
         else:
             pass
 
@@ -737,22 +633,17 @@ class SampleContext(object):
                 self.fitEC.append(int(fitEC_dummy))
 
         elif meth == 'Stress':
-#            etaMax = []
-#            fit = []
             while 1:
                 s = f.readline()
                 if not s: break
                 s = s.strip()
                 s = s.split()
-#                print("s===",s)
                 if not is_number(s[0]):
                     self.etaEC.append([])
                     for i in range(6): self.etaEC[-1].append(float(s[i+1]))
                 else:
                     self.fitEC.append([])
                     for i in range(6): self.fitEC[-1].append(int(s[i]))
-#                print("eta===",eta)
-#                print("fit===",fit)
         else:
             pass
 
@@ -826,26 +717,13 @@ class SampleContext(object):
                     ECMat[i][j] = float(ECMat[j][i])*giga
                     complMat[i][j] = float(complMat[j][i])/giga
 
-#            backend.addValue("x_elastic_deformation_types", defTyp)
-#            backend.addValue("x_elastic_number_of_deformations", defNum)
-#            elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
-#            backend.addValue("x_elastic_strain_diagram_type", "energy")
-#            backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
-#            backend.addValue("x_elastic_strain_diagram_eta_values", eta)
-#            backend.addValue("x_elastic_strain_diagram_values", energy)
-#            backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
-#            print("eta===",eta)
             if meth == 'Energy':
-#                print("eta===",eta)
-#                print("CrossVal2_eta===",CrossVal2_eta)
-#                print("d2E2_eta===",d2E2_eta)
                 elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
                 backend.addValue("x_elastic_strain_diagram_type", "energy")
                 backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
                 backend.addValue("x_elastic_strain_diagram_eta_values", eta)
                 backend.addValue("x_elastic_strain_diagram_values", energy)
                 backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
-#                print("CrossVal2_eta=",CrossVal2_eta)
                 elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
                 backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
                 backend.addValue("x_elastic_strain_diagram_polinomial_fit_order", 2)
@@ -895,53 +773,22 @@ class SampleContext(object):
                 backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
 
             elif meth == 'Stress':
-#                pass
-#                print("LagrStressInizio===",LagrStress)
-#                print("LagrStress_dummy===",LagrStress_dummy)
                 for k in range(6):
                     LagrStress.append([])
                     physStress.append([])
-#                    print("LagrStressKVoigt===",LagrStress)
                     for j in range(len(LagrStress_dummy)):
                         LagrStress[-1].append([])
                         physStress[-1].append([])
-#                        print("LagrStressJDeform===",LagrStress)
                         for i in range(len(LagrStress_dummy[j])):
-#                            print("Voigt===",k)
-#                            print("deform===",j)
-#                            print("eta===",i)
-#                            print("LagrStress_dummy[j][k][i]===",LagrStress_dummy[j][i][k])
                             LagrStress[k][j].append(LagrStress_dummy[j][i][k])
                             physStress[k][j].append(physStress_dummy[j][i][k])
-#                    for j in range(len(LagrStress_dummy[i])):
-#                    for k in range(6):
-#                        LagrStress[i].append([])
-#                        for j in range(len(LagrStress_dummy[i])):
-#                            LagrStress[i][k].append(LagrStress_dummy[i][j][k])
-#                print("LagrStress_dummy===",LagrStress_dummy)
-#                print("physStress_dummy===",physStress_dummy)
-#                print("LagrStress===",LagrStress)
-#                print("physStress===",physStress) 
-#                elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
-#                backend.addValue("x_elastic_strain_diagram_type", "Lagrangian-stress")
-#                backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(k+1))
-#                backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
-#                backend.addValue("x_elastic_strain_diagram_eta_values", eta)
-#                backend.addValue("x_elastic_strain_diagram_values", LagrStress[i][k])
-#                backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
-
                  
-#                print("LagrStress===",LagrStress)
                 for i in range(0,6):
-#                    print("eta===",eta)
-#                    print("eta[0]===",eta)
-#                    print("LagrStress===",LagrStress)
                     elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
                     backend.addValue("x_elastic_strain_diagram_type", "Lagrangian-stress")
                     backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
                     backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
                     backend.addValue("x_elastic_strain_diagram_eta_values", eta)
-#                    backend.addArrayValues("x_elastic_strain_diagram_eta_values",np.asarray(eta))
                     backend.addValue("x_elastic_strain_diagram_values", LagrStress[i])
                     backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
                 
@@ -950,13 +797,9 @@ class SampleContext(object):
                     backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
                     backend.addValue("x_elastic_strain_diagram_number_of_eta", len(eta[0]))
                     backend.addValue("x_elastic_strain_diagram_eta_values", eta)
-#                    backend.addArrayValues("x_elastic_strain_diagram_eta_values",np.asarray(eta))
                     backend.addValue("x_elastic_strain_diagram_values", physStress[i])
                     backend.closeSection("x_elastic_section_strain_diagrams", elasticSIndex)
 
-#        backend.addArrayValues('configuration_periodic_dimensions', np.asarray([True, True, True]))
-
-#                    print("CrossVal1_eta===",CrossVal1_eta)
                     elasticSIndex = backend.openSection("x_elastic_section_strain_diagrams")
                     backend.addValue("x_elastic_strain_diagram_type", "cross-validation")
                     backend.addValue("x_elastic_strain_diagram_stress_Voigt_component", int(i+1))
@@ -1560,23 +1403,18 @@ mainFileDescription = \
               startReStr = "",
               subMatchers = [
               SM(name = 'input',
-#                weak = True,
                 startReStr = r"\s*Order of elastic constants\s*=\s*(?P<x_elastic_elastic_constant_order>[0-9]+)",
-#                startReStr = "",
-#                endReStr = r"\*sNumber of distorted structures\*s=\s*(?P<x_elastic_number_of_disordered_structures>[0-9]+)",
                 repeats = False,
                 required = False,
                 forwardMatch = False,
                 sections   = ['section_run', 'section_method'],
                 subMatchers = [
-#                  SM(r"\s*Order of elastic constants\s*=\s*(?P<x_elastic_elastic_constant_order>[0-9]+)"),
                   SM(r"\s*Method of calculation\s*=\s*(?P<x_elastic_calculation_method>[-a-zA-Z]+)"),
                   SM(r"\s*DFT code name\s*=\s*(?P<x_elastic_code>[-a-zA-Z]+)"),
                   SM(name = 'system',
                   startReStr = r"\s*Space-group number\s*=\s*(?P<x_elastic_space_group_number>[0-9]+)",
                   sections = ['section_system'],
                   subMatchers = [
-#                  SM(r"\s*Space-group number\s*=\s*(?P<x_elastic_space_group_number>[0-9]+)"),
                   SM(r"\s*Volume of equilibrium unit cell\s*=\s*(?P<x_elastic_unit_cell_volume__bohr3>[-0-9.]+)\s*\[a.u\^3\]")
                   ]),
                   SM(r"\s*Maximum Lagrangian strain\s*=\s*(?P<x_elastic_max_lagrangian_strain>[0-9.]+)"),
@@ -1596,4 +1434,3 @@ metaInfoEnv, warnings = loadJsonFile(filePath = metaInfoPath, dependencyLoader =
 if __name__ == "__main__":
     superContext = SampleContext()
     mainFunction(mainFileDescription, metaInfoEnv, parserInfo, superContext = superContext)
-#    mainFileUri = sys.argv[1]