diff --git a/parser/parser-cp2k/cp2kparser/generic/inputparsing.py b/parser/parser-cp2k/cp2kparser/generic/inputparsing.py
index 310880ad47979f1f7acfbab2cee1ec4a240e33fe..7fef1567152804a75e18e4cecb8803d443bfb229 100644
--- a/parser/parser-cp2k/cp2kparser/generic/inputparsing.py
+++ b/parser/parser-cp2k/cp2kparser/generic/inputparsing.py
@@ -164,30 +164,54 @@ class InputObject(object):
         self.data_dimension = None
         self.default_value = None
 
-    def get_formatted_value(self):
-        """ Used to set the value of the keyword. The data will be transformed
-        into the correct data type and dimension from a simple string.
+
+#===============================================================================
+class Keyword(InputObject):
+    """Information about a keyword in a CP2K calculation.
+    """
+    __slots__ = ['unit', 'value_no_unit', 'default_unit', 'default_name']
+
+    def __init__(self, name, default_value,  default_unit, default_name):
+        super(Keyword, self).__init__(name)
+        self.unit = None
+        self.value_no_unit = None
+        self.default_unit = default_unit
+        self.default_value = default_value
+        self.default_name = default_name
+
+    def get_value(self):
+        """Returns the value stored in this keyword by removing the possible
+        unit definition and formatting the string into the correct data type.
         """
+        # Decode the unit and the value if not done before
+        if self.default_unit:
+            if not self.value_no_unit:
+                self.decode_cp2k_unit_and_value()
+        if self.value_no_unit is not None:
+            proper_value = self.value_no_unit
+        else:
+            proper_value = self.value
+
         returned = None
         dim = int(self.data_dimension)
-        splitted = self.value.split()
+        splitted = proper_value.split()
         if len(splitted) != dim:
             logger.error("The dimensions of the CP2K input parameter {} do not match the specification in the XML file.".format(self.name))
 
         if dim == 1:
             try:
                 if self.data_type == "integer":
-                    returned = int(self.value)
+                    returned = int(proper_value)
                 elif self.data_type == "real":
-                    returned = float(self.value)
+                    returned = float(proper_value)
                 elif self.data_type == "word":
-                    returned = str(self.value)
+                    returned = str(proper_value)
                 elif self.data_type == "keyword":
-                    returned = str(self.value)
+                    returned = str(proper_value)
                 elif self.data_type == "string":
-                    returned = str(self.value)
+                    returned = str(proper_value)
                 elif self.data_type == "logical":
-                    returned = str(self.value)
+                    returned = str(proper_value)
                 else:
                     logger.error("Unknown data type '{}'".format(self.data_type))
                     return
@@ -217,22 +241,7 @@ class InputObject(object):
 
         return returned
 
-
-#===============================================================================
-class Keyword(InputObject):
-    """Information about a keyword in a CP2K calculation.
-    """
-    __slots__ = ['unit', 'value_no_unit', 'default_unit', 'default_name']
-
-    def __init__(self, name, default_value,  default_unit, default_name):
-        super(Keyword, self).__init__(name)
-        self.unit = None
-        self.value_no_unit = None
-        self.default_unit = default_unit
-        self.default_value = default_value
-        self.default_name = default_name
-
-    def get_value(self):
+    def determine_value_and_unit(self):
         """If the units of this value can be changed, return a value and the
         unit separately.
         """
@@ -244,12 +253,15 @@ class Keyword(InputObject):
             return self.value
 
     def get_unit(self):
+
+        # Decode the unit and the value if not done before
         if self.default_unit:
             if not self.unit:
                 self.decode_cp2k_unit_and_value()
             return self.unit
         else:
             logger.error("The keyword '{}' does not have a unit.".format(self.default_name))
+            return None
 
     def decode_cp2k_unit_and_value(self):
         """Given a CP2K unit name, decode it as Pint unit definition.
diff --git a/parser/parser-cp2k/cp2kparser/tools/xmlpreparser.py b/parser/parser-cp2k/cp2kparser/tools/xmlpreparser.py
index cb4e2c7ba520f365d87b7d366f7c8e7a8a05a2fd..58d7e57bf950e43bdd6df500a2af465972436f22 100644
--- a/parser/parser-cp2k/cp2kparser/tools/xmlpreparser.py
+++ b/parser/parser-cp2k/cp2kparser/tools/xmlpreparser.py
@@ -222,8 +222,8 @@ def generate_metainfo_recursively(obj, parent, container, name_stack):
 def generate_input_object_metainfo_json(child, parent, name_stack):
     path = ".".join(name_stack)
     json_obj = {}
-    json_obj["name"] = "cp2k_{}.{}".format(path, child.name)
-    json_obj["superNames"] = ["cp2k_{}".format(path)]
+    json_obj["name"] = "x_cp2k_{}.{}".format(path, child.name)
+    json_obj["superNames"] = ["x_cp2k_{}".format(path)]
 
     # Description
     description = child.description
@@ -232,22 +232,23 @@ def generate_input_object_metainfo_json(child, parent, name_stack):
     json_obj["description"] = description
 
     # Shape
-    data_dim = int(child.data_dimension)
-    if data_dim == -1:
-        data_dim = "n"
-    if data_dim == 1:
-        json_obj["shape"] = []
-    else:
-        json_obj["shape"] = [data_dim]
+    # data_dim = int(child.data_dimension)
+    # if data_dim == -1:
+        # data_dim = "n"
+    # if data_dim == 1:
+        # json_obj["shape"] = []
+    # else:
+        # json_obj["shape"] = [data_dim]
+    json_obj["shape"] = []
 
     # Determine data type according to xml info
     mapping = {
         "keyword": "C",
         "logical": "C",
         "string": "C",
-        "integer": "i",
+        "integer": "C",
         "word": "C",
-        "real": "f",
+        "real": "C",
     }
     json_obj["dtypeStr"] = mapping[child.data_type]
     return json_obj
@@ -259,9 +260,9 @@ def generate_section_metainfo_json(child, parent, name_stack):
     path = ".".join(name_stack[:-1])
     json_obj = {}
 
-    json_obj["name"] = "cp2k_{}".format(name)
+    json_obj["name"] = "x_cp2k_{}".format(name)
     json_obj["kindStr"] = "type_section"
-    json_obj["superNames"] = ["cp2k_{}".format(path)]
+    json_obj["superNames"] = ["x_cp2k_{}".format(path)]
 
     description = child.description
     if description is None or description.isspace():
diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py
index 17fa5366091961f64e1d2281148e6c99cfa1c556..1bb6e7c3bc03499f071d6661383f7d4fb6d490e6 100644
--- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py
+++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py
@@ -330,23 +330,20 @@ class CP2KInputParser(BasicParser):
             for keyword in keywords:
                 if keyword.value is not None:
                     name = "{}.{}".format(path, keyword.default_name)
-                    formatted_value = keyword.get_formatted_value()
-                    self.add_formatted_value_to_backend(name, formatted_value)
+                    self.backend.addValue(name, keyword.value)
 
         # Section parameter
         section_parameter = section.section_parameter
         if section_parameter is not None:
             name = "{}.SECTION_PARAMETERS".format(path)
-            formatted_value = section_parameter.get_formatted_value()
-            self.add_formatted_value_to_backend(name, formatted_value)
+            self.backend.addValue(name, section_parameter.value)
 
         # Default keyword
         default_keyword = section.default_keyword
         if default_keyword is not None:
 
             name = "{}.DEFAULT_KEYWORD".format(path)
-            formatted_value = default_keyword.get_formatted_value()
-            self.add_formatted_value_to_backend(name, formatted_value)
+            self.backend.addValue(name, default_keyword.value)
 
         # Subsections
         for name, subsections in section.sections.iteritems():
@@ -357,13 +354,6 @@ class CP2KInputParser(BasicParser):
 
         name_stack.pop()
 
-    def add_formatted_value_to_backend(self, name, formatted_value):
-        if formatted_value is not None:
-            if isinstance(formatted_value, np.ndarray):
-                self.backend.addArrayValues(name, formatted_value)
-            else:
-                self.backend.addValue(name, formatted_value)
-
     def setup_version(self, version_number):
         """ The pickle file which contains preparsed data from the
         x_cp2k_input.xml is version specific. By calling this function before
diff --git a/test/unittests/cp2k_2.6.2/run_tests.py b/test/unittests/cp2k_2.6.2/run_tests.py
index 68ae89303ffcef281641167d68ef9b1315c840a3..01ffa3a1f8d8a288e01dd3215fb9243b917b6a9f 100644
--- a/test/unittests/cp2k_2.6.2/run_tests.py
+++ b/test/unittests/cp2k_2.6.2/run_tests.py
@@ -444,15 +444,15 @@ class TestPreprocessor(unittest.TestCase):
 
     def test_variable_multiple(self):
         result = get_result("input_preprocessing/variable_multiple", "x_cp2k_CP2K_INPUT.FORCE_EVAL.DFT.MGRID.CUTOFF", optimize=False)
-        self.assertEqual(result, 50)
+        self.assertEqual(result, "50")
 
     def test_comments(self):
         result = get_result("input_preprocessing/comments", "x_cp2k_CP2K_INPUT.FORCE_EVAL.DFT.MGRID.CUTOFF", optimize=False)
-        self.assertEqual(result, 120)
+        self.assertEqual(result, "120")
 
     def test_tabseparator(self):
         result = get_result("input_preprocessing/tabseparator", "x_cp2k_CP2K_INPUT.FORCE_EVAL.DFT.MGRID.CUTOFF", optimize=False)
-        self.assertEqual(result, 120)
+        self.assertEqual(result, "120")
 
 
 #===============================================================================
@@ -617,17 +617,17 @@ if __name__ == '__main__':
     logger.setLevel(logging.ERROR)
 
     suites = []
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestErrors))
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestXCFunctional))
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestEnergyForce))
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestStressTensorMethods))
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestSelfInteractionCorrectionMethod))
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestConfigurationPeriodicDimensions))
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestSCFConvergence))
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestForceFiles))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestErrors))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestXCFunctional))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestEnergyForce))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestStressTensorMethods))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestSelfInteractionCorrectionMethod))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestConfigurationPeriodicDimensions))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestSCFConvergence))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestForceFiles))
     suites.append(unittest.TestLoader().loadTestsFromTestCase(TestPreprocessor))
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOpt))
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOptTrajFormats))
-    # suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOptOptimizers))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOpt))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOptTrajFormats))
+    suites.append(unittest.TestLoader().loadTestsFromTestCase(TestGeoOptOptimizers))
     alltests = unittest.TestSuite(suites)
     unittest.TextTestRunner(verbosity=0).run(alltests)