diff --git a/parser/parser-siesta/main.py b/parser/parser-siesta/main.py
index e2868c402e0cc457b91abf03cda0ee2654d375f4..934e4b7dba1fcc9630db948ecf0135cfe9d03516 100644
--- a/parser/parser-siesta/main.py
+++ b/parser/parser-siesta/main.py
@@ -42,6 +42,9 @@ metaInfoEnv, warnings = loadJsonFile(filePath=metaInfoPath,
 
 parser_info = {'name':'siesta-parser', 'version': '1.0'}
 
+def metaN(metaName):
+    """Retrurns a normalized meta name"""
+    return metaName.replace(".", "_").replace("-", "_").lower()
 
 def siesta_energy(title, meta, **kwargs):
     return SM(r'siesta:\s*%s\s*=\s*(?P<%s__eV>\S+)' % (title, meta),
@@ -213,7 +216,7 @@ class SiestaContext(object):
     #def onClose_x_siesta_section_xc_authors(self, backend, gindex, section):
 
     def onClose_section_frame_sequence(self, backend, gindex, section):
-        backend.addValue('frame_sequence_to_sampling_ref',
+        backend.addValue('frame_sequence_to_sampling_method_ref',
                          self.section_refs['sampling_method'])
 
     def onOpen_section_sampling_method(self, backend, gindex, section):
@@ -320,7 +323,7 @@ class SiestaContext(object):
             meta['atom_positions'] = positions
 
         for key, value in meta.items():
-            backend.addArrayValues(key, value)
+            backend.addArrayValues(metaN(key), value)
 
         backend.addArrayValues('configuration_periodic_dimensions',
                                np.ones(3, bool))
@@ -336,7 +339,11 @@ class SiestaContext(object):
         if forces is not None:
             forces = forces.astype(float)
             forces = convert_unit(forces, 'eV/angstrom')
-            backend.addArrayValues('atom_forces_free_raw', forces)
+            fId = backend.openSection('section_atom_forces')
+            backend.addValue('atom_forces_quantity', 'energy_free')
+            backend.addValue('atom_forces_constraints', 'raw')
+            backend.addArrayValues('atom_forces', forces)
+            backend.closeSection('section_atom_forces', fId)
 
         stress = self.data.pop('stress_tensor_ev_ang', None)
         if stress is not None:
@@ -344,7 +351,7 @@ class SiestaContext(object):
             stress = convert_unit(stress, 'eV/angstrom^3')
             backend.addArrayValues('stress_tensor', stress)
 
-        backend.addValue('single_configuration_to_calculation_method_ref',
+        backend.addValue('single_configuration_calculation_to_method_ref',
                          self.section_refs['method'])
         backend.addValue('single_configuration_calculation_to_system_ref',
                          self.section_refs['system'])
@@ -357,7 +364,7 @@ class SiestaContext(object):
         inputvars, blocks = get_input_metadata(inputvars_file,
                                                self.format == 'new')
         for varname, value in inputvars.items():
-            backend.addValue('x_siesta_input_%s' % varname, value)
+            backend.addValue(metaN('x_siesta_input_%s' % varname), value)
 
         for special_name in ['LatticeConstant',
                              'AtomicCoordinatesFormat',
@@ -404,9 +411,9 @@ class SiestaContext(object):
                              % authors)
 
         for funcname in xc:
-            gid = backend.openSection('section_XC_functionals')
-            backend.addValue('XC_functional_name', funcname)
-            backend.closeSection('section_XC_functionals', gid)
+            gid = backend.openSection('section_xc_functionals')
+            backend.addValue('xc_functional_name', funcname)
+            backend.closeSection('section_xc_functionals', gid)
 
     def read_eigenvalues(self, backend):
         eigfile = self.files.get('EIG')
@@ -450,8 +457,8 @@ class SiestaContext(object):
         coords = data[:, 1:4].astype(float)
         weights = data[:, 4].astype(float)
         backend.addArrayValues('eigenvalues_kpoints', coords)
-        # XXX metadata for Fermi level?
-        # k-point weights?
+        # XXX metadata for Fermi level? -> energy_reference_fermi
+        backend.addArrayValues('eigenvalues_kpoints_weights', weights)
 
     def save_array(self, key, dtype=float, istart=0, iend=None,
                    unit=None):
@@ -622,7 +629,7 @@ def get_step_matcher():
                       siesta_energy('Kinetic', 'electronic_kinetic_energy'),
                       siesta_energy('Hartree', 'energy_electrostatic'),
                       #siesta_energy('Ext\. field', ''),
-                      siesta_energy('Exch\.-corr\.', 'energy_XC'),
+                      siesta_energy('Exch\.-corr\.', 'energy_xc'),
                       #siesta_energy('Ion-electron', ''),
                       #siesta_energy('Ion-Ion', ''),
                       #siesta_energy('Ekinion', ''),
diff --git a/parser/parser-siesta/mkjson.py b/parser/parser-siesta/mkjson.py
index 42295db6660949e477c3e90a6242c5faf0b300eb..af8627f9b641688ad3f56076ead915a412578d37 100644
--- a/parser/parser-siesta/mkjson.py
+++ b/parser/parser-siesta/mkjson.py
@@ -62,6 +62,10 @@ import sys
 inputvars_fd = open('inputvars.py', 'w')
 print('varlist = [', file=inputvars_fd)
 
+def metaN(metaName):
+    """Retrurns a normalized meta name"""
+    return metaName.replace(".", "_").replace("-", "_").lower()
+
 def getlines():
     fd = open('test/H2O/fdf-95611.log')
     for line in fd:
@@ -107,7 +111,7 @@ if 1:
         print("    '%s'," % var, file=inputvars_fd)
         json = json_template % dict(description=r'siesta input variable \"%s\"'
                                     % var,
-                                    name='x_siesta_input_%s' % var,
+                                    name=metaN('x_siesta_input_%s' % var),
                                     dtypeStr='C',
                                     supername='x_siesta_input')
         jsontokens.append(json)
diff --git a/src/main/scala/eu/nomad_lab/parsers/SiestaParser.scala b/src/main/scala/eu/nomad_lab/parsers/SiestaParser.scala
index 103b0a937f4913d304b0e9cd7a0000246e535257..e59895f71477fb58948b985fc858f593dc1d2ca1 100644
--- a/src/main/scala/eu/nomad_lab/parsers/SiestaParser.scala
+++ b/src/main/scala/eu/nomad_lab/parsers/SiestaParser.scala
@@ -47,8 +47,8 @@ object SiestaParser extends SimpleExternalParserGenerator(
     "parser-siesta/setup_paths.py",
     "nomad_meta_info/public.nomadmetainfo.json",
     "nomad_meta_info/common.nomadmetainfo.json",
-    "nomad_meta_info/meta_types.nomadmetainfo.json",
-    "nomad_meta_info/siesta.autogenerated.nomadmetainfo.json",
+    "nomad_meta_info/meta.nomadmetainfo.json",
+    "nomad_meta_info/siesta_autogenerated.nomadmetainfo.json",
     "nomad_meta_info/siesta.nomadmetainfo.json"
   ) ++ DefaultPythonInterpreter.commonFiles(),
   dirMap = Map(