diff --git a/parser/parser-elastic/elastic_parser_input_exciting.py b/parser/parser-elastic/elastic_parser_input_exciting.py
new file mode 100644
index 0000000000000000000000000000000000000000..63b69f08b8be3b89afc4e7d10e67a10e423e7210
--- /dev/null
+++ b/parser/parser-elastic/elastic_parser_input_exciting.py
@@ -0,0 +1,80 @@
+# Copyright 2016-2018 The NOMAD Developers Group
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Main author and maintainer: Lorenzo Pardini <loren.pard@gmail.com>
+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):
+        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")
diff --git a/parser/parser-elastic/elastic_parser_input_wien2k.py b/parser/parser-elastic/elastic_parser_input_wien2k.py
new file mode 100644
index 0000000000000000000000000000000000000000..63b69f08b8be3b89afc4e7d10e67a10e423e7210
--- /dev/null
+++ b/parser/parser-elastic/elastic_parser_input_wien2k.py
@@ -0,0 +1,80 @@
+# Copyright 2016-2018 The NOMAD Developers Group
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Main author and maintainer: Lorenzo Pardini <loren.pard@gmail.com>
+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):
+        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")
diff --git a/parser/parser-elastic/parser_elastic.py b/parser/parser-elastic/parser_elastic.py
index b779ecd4b9a599446ca675f204eb4afafd34cf94..568ec9548c9ce664e5ead9b211742d32fd1651cc 100644
--- a/parser/parser-elastic/parser_elastic.py
+++ b/parser/parser-elastic/parser_elastic.py
@@ -21,13 +21,14 @@ from nomadcore.parser_backend import JsonParseEventsWriterBackend
 from nomadcore.simple_parser import mainFunction
 from nomadcore.simple_parser import SimpleMatcher as SM
 from nomadcore.local_meta_info import loadJsonFile, InfoKindEl
-import os, sys, json, elastic_parser_input
+import os, sys, json, elastic_parser_input_exciting, elastic_parser_input_wien2k
+from pathlib import Path
 
 class SampleContext(object):
 
     def __init__(self): 
-#        self.mainFileUri = sys.argv[1]  #exciting !!!!!!LOCAL HOME!!!!!!!!
-        self.mainFileUri = sys.argv[2]  #exciting !!! FOR NOMAD URI nmd:// or sbt -> zip file!!!!!!!!
+#        self.mainFileUri = sys.argv[1]  #exciting !!!!!!LOCAL HOME!!!!!!!!             OKOKOKOK
+        self.mainFileUri = sys.argv[2]  #exciting !!! FOR NOMAD URI nmd:// or sbt -> zip file!!!!!!!!   OKOKKOOK
         self.parser = None
         self.mainFilePath = None
         self.mainFile = None
@@ -55,27 +56,58 @@ class SampleContext(object):
 
     def onClose_section_run(self, backend, gIndex, section):        
         backend.addValue('program_name', 'elastic')
+        backend.addValue('program_version', '1.0')
 
     def onClose_section_system(self, backend, gIndex, section):
         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
+        dirPath = os.path.dirname(mainFile)           #####exciting sbt -> zip file####     YES ?????????? sure???? check first    OKOKOKKO
         self.mainFile = self.parser.fIn.name              #####exciting sbt -> zip file####     YES
         self.mainFilePath = self.mainFile[0:-12]    #####exciting sbt -> zip file####           YES
 #        print("self.mainFileUri=",self.mainFileUri)
-#        dirPath = self.mainFileUri[0:-12]   #####exciting LOCAL HOME or from NOMAD URI nmd://  #######   YES
+#        dirPath = self.mainFileUri[0:-12]   #####exciting LOCAL HOME or from NOMAD URI nmd://  #######   YES                      OKOKOKOK
 #        print("dirPath=",dirPath)
 #        for files in os.listdir(self.mainFilePath):
         for files in os.listdir(dirPath):
             if files[-3:] == "xml":
                 inputFile = files
-            else:
-                pass
-        os.chdir(self.mainFilePath)
+                os.chdir(self.mainFilePath)
+                with open(inputFile) as f:
+                    elastic_parser_input_exciting.parseInput(f, backend)
+            elif files[-6:] == "struct":
+                inputFile = files
+                os.chdir(self.mainFilePath)
+#                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 g:
+                    while 1:
+                        s = g.readline()
+                        if not s: break
+                        s = s.strip()
+#                        print("s===",s)
+#                    structParser.parseFile(fIn)
+#                    elastic_parser_input_wien2k.parseInput(f, backend)
+#
+#        if os.path.exists(fName):
+#            structSuperContext = wien2k_parser_struct.Wien2kStructContext()
+#            structParser = AncillaryParser(
+#                fileDescription = wien2k_parser_struct.buildStructureMatchers(),
+#                parser = self.parser,
+#                cachingLevelForMetaName = wien2k_parser_struct.get_cachingLevelForMetaName(self.metaInfoEnv, CachingLevel.PreOpenedIgnore),
+#                superContext = structSuperContext)
+#
+#            with open(fName) as fIn:
+#                structParser.parseFile(fIn)
+#####come era prima di wien                pass
+#####come era prima di wien        os.chdir(self.mainFilePath)
 #        os.chdir(dirPath)
-        with open(inputFile) as f:
-            elastic_parser_input.parseInput(f, backend)
+#####come era prima di wien        with open(inputFile) as f:
+#####come era prima di wien            elastic_parser_input.parseInput(f, backend)
 #        print(os.listdir(dirPath))
 #        if os.path.exist([-3:]) == "xml":
 #            inputFile = os.path.exist()
@@ -132,18 +164,28 @@ class SampleContext(object):
                     if (i<10):
                         if elCode[0] == 'exciting':
                             ext_uri.append(self.mainFilePath + 'Dst0' + str(j) + '/Dst0' + str(j) + '_0' + str(i) + '/INFO.OUT')
-                        elif elCode[0] == 'WIEN2K':
-                            pass
+                        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] == 'ESPRESSO':
                             pass
 #####################above: to be repeated below for the wien2k and QE################
                     else:
-                        ext_uri.append(self.mainFilePath + 'Dst0' + str(j) +  '/Dst0' + str(j) + '_' + str(i) + '/INFO.OUT')
+                        if elCode[0] == 'exciting':
+                            ext_uri.append(self.mainFilePath + 'Dst0' + str(j) +  '/Dst0' + str(j) + '_' + str(i) + '/INFO.OUT')
+                        elif elCode[0] == 'WIEN':
+                            ext_uri.append(self.mainFilePath + 'Dst0' + str(j) +  '/Dst0' + str(j) + '_' + str(i) + '/Dst0' + str(j) + '_' + str(i) + '_Converged.scf')
                 else:
                     if (i<10):
-                        ext_uri.append(self.mainFilePath + 'Dst' + str(j) + '/Dst' + str(j)  + '_0' + str(i) + '/INFO.OUT')
+                        if elCode[0] == 'exciting':
+                            ext_uri.append(self.mainFilePath + 'Dst' + str(j) + '/Dst' + str(j)  + '_0' + str(i) + '/INFO.OUT')
+                        elif elCode[0] == 'WIEN':
+                            ext_uri.append(self.mainFilePath + 'Dst' + str(j) + '/Dst' + str(j)  + '_0' + str(i) + '/Dst' + str(j)  + '_0' + str(i) + '_Converged.scf')
                     else:
-                        ext_uri.append(self.mainFilePath + 'Dst' + str(j) + '/Dst' + str(j)  + '_' + str(i) + '/INFO.OUT')
+                        if elCode[0] == 'exciting':
+                            ext_uri.append(self.mainFilePath + 'Dst' + str(j) + '/Dst' + str(j)  + '_' + str(i) + '/INFO.OUT')
+                        elif elCode[0] == 'WIEN':
+                            ext_uri.append(self.mainFilePath + 'Dst' + str(j) + '/Dst' + str(j)  + '_' + str(i) +'/Dst' + str(j)  + '_' + str(i) + '_Converged.scf')
         for ref in ext_uri:
             refGindex = backend.openSection("section_calculation_to_calculation_refs")
             backend.addValue("calculation_to_calculation_external_url", ref)
@@ -171,23 +213,93 @@ class SampleContext(object):
 
 ###############ADDED BELOW###################
 #
-#            cur_dir = os.getcwd() + 
+            cur_dir = os.getcwd() 
 #            print("cur_dir=", cur_dir)
 #
 ##############ADDED ABOVE####################
 
             os.chdir(Dstn)
 
-            f = open(Dstn+'-Energy.dat', 'r')
-            while 1:
-               s = f.readline()
-               if not s: break
-               s = s.strip()
-               dummy_eta, dummy_energy = s.split()
-               eta[-1].append(float(dummy_eta))
-               energy[-1].append(float(dummy_energy)*ha_per_joule)
-            os.chdir('../')
-        
+            cur_dir = os.getcwd() 
+#            print("cur_dir=", cur_dir)
+
+#            my_file_exc = '/' + Dstn+'-Energy.dat'
+#            my_file_wien = '/' +Dstn+'_Energy.dat'
+#            my_file_exciting = Path('my_file_exc')
+#            my_file_wien2k = Path('my_file_wien')
+
+#            print("my_file_exc=",my_file_exc)
+#            print("my_file_wien=",my_file_wien)
+#            print("my_file_exciting=",my_file_exciting)
+#            print("my_file_wien2k=",my_file_wien2k)
+#            cur_dir = os.getcwd()
+#            print("cur_dir=", cur_dir)
+#            print(my_file_exciting.exists())
+#            print(my_file_wien2k.exists())
+
+#            print("elCode[0]=",elCode[0])
+            if elCode[0] == 'exciting':
+#                print("ooooooooooexciting")
+                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] == '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('../')
+
+            else:
+                os.chdir('../')
+
+#            try:              # WIEN2k
+#                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('../')
+#            except FileNotFoundError:
+#                os.chdir('../')
+
+ #           try:              # exciting
+ #               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('../')
+ #           except FileNotFoundError:
+ #               os.chdir('../')
+#            os.chdir('../')
+#            print("and now?",os.getcwd()) 
         defTyp = []
 
         f = open('Distorted_Parameters','r')
@@ -211,113 +323,122 @@ class SampleContext(object):
 #        backend.addValue("x_elastic_energy_strain_eta_values", eta)
 #        backend.addValue("x_elastic_energy_strain_energy_values", energy)
 #        backend.closeSection("x_elastic_section_single_configuration_calculation", elasticGIndex)
-        os.chdir('Energy-vs-Strain')
 
-        d2E6_val = []
-        d2E4_val = []
-        d2E2_val = []
-        d2E6_eta = []
-        d2E4_eta = []
-        d2E2_eta = []
-        d2E_val_tot = []
-        d2E_eta_tot = []
-
-        for i in range(1, ECs+1):
-            d2E_val_tot.append([])
-            d2E_eta_tot.append([])
-            if (i<10):
-                if ordr == 2:
-                    Dstn = 'Dst0'+ str(i) + '_d2E.dat'
-                elif ordr == 3:
-                    Dstn = 'Dst0'+ str(i) + '_d3E.dat'
-                f = open (Dstn,'r')
-                while 1:
-                    s = f.readline()
-                    if not s: break
-                    s = s.strip()
-                    if "order" in s.split():
-                        d2E_val_tot[-1].append([])
-                        d2E_eta_tot[-1].append([])
-                    elif len(s) >= 30:
-                        d2E_eta, d2E_values = s.split()
-                        d2E_val_tot[-1][-1].append(float(d2E_values)*giga)
-                        d2E_eta_tot[-1][-1].append(float(d2E_eta))
-                f.close()
-            else:
-                if ordr == 2:
-                    Dstn = 'Dst' + str(i) + '_d2E.dat'
-                elif ordr == 3:
-                    Dstn = 'Dst'+ str(i) + '_d3E.dat'
-                f = open (Dstn,'r')
-                while 1:
-                    s = f.readline()
-                    if not s: break
-                    s = s.strip()
-                    if "order" in s.split():
-                        d2E_val_tot[-1].append([])
-                        d2E_eta_tot[-1].append([])
-                    elif len(s) >= 30:
-                        d2E_eta, d2E_values = s.split()
-                        d2E_val_tot[-1][-1].append(float(d2E_values)*giga)
-                        d2E_eta_tot[-1][-1].append(float(d2E_eta))
-                f.close()
-            d2E6_val.append(d2E_val_tot[i-1][0])
-            d2E4_val.append(d2E_val_tot[i-1][1])
-            d2E2_val.append(d2E_val_tot[i-1][2])
-            d2E6_eta.append(d2E_eta_tot[i-1][0])
-            d2E4_eta.append(d2E_eta_tot[i-1][1])
-            d2E2_eta.append(d2E_eta_tot[i-1][2])
-        CrossVal6_val = []
-        CrossVal4_val = []
-        CrossVal2_val = []
-        CrossVal_val_tot = []
-
-        CrossVal6_eta = []
-        CrossVal4_eta = []
-        CrossVal2_eta = []
-        CrossVal_eta_tot = []
+        my_file = Path("Energy-vs-Strain")
+#        print("ooooo",my_file.exists())
+        if my_file.is_dir():
+#            print("esiste! :-)")
+#        else:
+#            print("non esiste :-(")
+            os.chdir('Energy-vs-Strain')
+
+            d2E6_val = []
+            d2E4_val = []
+            d2E2_val = []
+            d2E6_eta = []
+            d2E4_eta = []
+            d2E2_eta = []
+            d2E_val_tot = []
+            d2E_eta_tot = []
+
+            for i in range(1, ECs+1):
+                d2E_val_tot.append([])
+                d2E_eta_tot.append([])
+                if (i<10):
+                    if ordr == 2:
+                        Dstn = 'Dst0'+ str(i) + '_d2E.dat'
+                    elif ordr == 3:
+                        Dstn = 'Dst0'+ str(i) + '_d3E.dat'
+                    f = open (Dstn,'r')
+                    while 1:
+                        s = f.readline()
+                        if not s: break
+                        s = s.strip()
+                        if "order" in s.split():
+                            d2E_val_tot[-1].append([])
+                            d2E_eta_tot[-1].append([])
+                        elif len(s) >= 30:
+                            d2E_eta, d2E_values = s.split()
+                            d2E_val_tot[-1][-1].append(float(d2E_values)*giga)
+                            d2E_eta_tot[-1][-1].append(float(d2E_eta))
+                    f.close()
+                else:
+                    if ordr == 2:
+                        Dstn = 'Dst' + str(i) + '_d2E.dat'
+                    elif ordr == 3:
+                        Dstn = 'Dst'+ str(i) + '_d3E.dat'
+                    f = open (Dstn,'r')
+                    while 1:
+                        s = f.readline()
+                        if not s: break
+                        s = s.strip()
+                        if "order" in s.split():
+                            d2E_val_tot[-1].append([])
+                            d2E_eta_tot[-1].append([])
+                        elif len(s) >= 30:
+                            d2E_eta, d2E_values = s.split()
+                            d2E_val_tot[-1][-1].append(float(d2E_values)*giga)
+                            d2E_eta_tot[-1][-1].append(float(d2E_eta))
+                    f.close()
+                d2E6_val.append(d2E_val_tot[i-1][0])
+                d2E4_val.append(d2E_val_tot[i-1][1])
+                d2E2_val.append(d2E_val_tot[i-1][2])
+                d2E6_eta.append(d2E_eta_tot[i-1][0])
+                d2E4_eta.append(d2E_eta_tot[i-1][1])
+                d2E2_eta.append(d2E_eta_tot[i-1][2])
+            CrossVal6_val = []
+            CrossVal4_val = []
+            CrossVal2_val = []
+            CrossVal_val_tot = []
+
+            CrossVal6_eta = []
+            CrossVal4_eta = []
+            CrossVal2_eta = []
+            CrossVal_eta_tot = []
+
+            for i in range(1, ECs+1):
+                CrossVal_val_tot.append([])
+                CrossVal_eta_tot.append([])
+                if (i<10):
+                    DstnCV = 'Dst0'+ str(i) + '_CVe.dat'
+                    f = open (DstnCV,'r')
+                    while 1:
+                        s = f.readline()
+                        if not s: break
+                        s = s.strip()
+                        if "order" in s.split():
+                            CrossVal_val_tot[-1].append([])
+                            CrossVal_eta_tot[-1].append([])
+                        elif len(s) >= 20 and s.split()[0] != '#':
+                            CrossVal_eta, CrossVal_values = s.split()
+                            CrossVal_val_tot[-1][-1].append(float(CrossVal_values)*ha_per_joule)
+                            CrossVal_eta_tot[-1][-1].append(float(CrossVal_eta))
+                    f.close()
+                else:
+                    DstnCV = 'Dst' + str(i) + '_CVe.dat'
+                    f = open (Dstn,'r')
+                    while 1:
+                        s = f.readline()
+                        if not s: break
+                        s = s.strip()
+                        if "order" in s.split():
+                            CrossVal_val_tot[-1].append([])
+                            CrossVal_eta_tot[-1].append([])
+                        elif len(s) >= 20 and s.split()[0] != '#':
+                            CrossVal_eta, CrossVal_values = s.split()
+                            CrossVal_val_tot[-1][-1].append(float(CrossVal_values)*ha_per_joule)
+                            CrossVal_eta_tot[-1][-1].append(float(CrossVal_eta))
+                    f.close()
+                CrossVal6_val.append(CrossVal_val_tot[i-1][0])
+                CrossVal4_val.append(CrossVal_val_tot[i-1][1])
+                CrossVal2_val.append(CrossVal_val_tot[i-1][2])
+                CrossVal6_eta.append(CrossVal_eta_tot[i-1][0])
+                CrossVal4_eta.append(CrossVal_eta_tot[i-1][1])
+                CrossVal2_eta.append(CrossVal_eta_tot[i-1][2])
 
-        for i in range(1, ECs+1):
-            CrossVal_val_tot.append([])
-            CrossVal_eta_tot.append([])
-            if (i<10):
-                DstnCV = 'Dst0'+ str(i) + '_CVe.dat'
-                f = open (DstnCV,'r')
-                while 1:
-                    s = f.readline()
-                    if not s: break
-                    s = s.strip()
-                    if "order" in s.split():
-                        CrossVal_val_tot[-1].append([])
-                        CrossVal_eta_tot[-1].append([])
-                    elif len(s) >= 20 and s.split()[0] != '#':
-                        CrossVal_eta, CrossVal_values = s.split()
-                        CrossVal_val_tot[-1][-1].append(float(CrossVal_values)*ha_per_joule)
-                        CrossVal_eta_tot[-1][-1].append(float(CrossVal_eta))
-                f.close()
-            else:
-                DstnCV = 'Dst' + str(i) + '_CVe.dat'
-                f = open (Dstn,'r')
-                while 1:
-                    s = f.readline()
-                    if not s: break
-                    s = s.strip()
-                    if "order" in s.split():
-                        CrossVal_val_tot[-1].append([])
-                        CrossVal_eta_tot[-1].append([])
-                    elif len(s) >= 20 and s.split()[0] != '#':
-                        CrossVal_eta, CrossVal_values = s.split()
-                        CrossVal_val_tot[-1][-1].append(float(CrossVal_values)*ha_per_joule)
-                        CrossVal_eta_tot[-1][-1].append(float(CrossVal_eta))
-                f.close()
-            CrossVal6_val.append(CrossVal_val_tot[i-1][0])
-            CrossVal4_val.append(CrossVal_val_tot[i-1][1])
-            CrossVal2_val.append(CrossVal_val_tot[i-1][2])
-            CrossVal6_eta.append(CrossVal_eta_tot[i-1][0])
-            CrossVal4_eta.append(CrossVal_eta_tot[i-1][1])
-            CrossVal2_eta.append(CrossVal_eta_tot[i-1][2])
-
-        os.chdir('../')
+            os.chdir('../')
+        else:
+            pass
 
         if ordr == 2:
             f = open ('ElaStic_'+str(ordr)+'nd.in','r')
diff --git a/src/main/scala/eu/nomad_lab/parsers/ElasticParser.scala b/src/main/scala/eu/nomad_lab/parsers/ElasticParser.scala
index 234625aa5772695067e01f0502b672e60e3aeb8a..6d9684b86f39bbb3838319f12f2402d146af0fe4 100644
--- a/src/main/scala/eu/nomad_lab/parsers/ElasticParser.scala
+++ b/src/main/scala/eu/nomad_lab/parsers/ElasticParser.scala
@@ -42,7 +42,8 @@ object ElasticParser extends SimpleExternalParserGenerator(
   resList = Seq(
     "parser-elastic/parser_elastic.py",
     "parser-elastic/setup_paths.py",
-    "parser-elastic/elastic_parser_input.py",
+    "parser-elastic/elastic_parser_input_wien2k.py",
+    "parser-elastic/elastic_parser_input_exciting.py",
     "nomad_meta_info/public.nomadmetainfo.json",
     "nomad_meta_info/common.nomadmetainfo.json",
     "nomad_meta_info/meta_types.nomadmetainfo.json",