diff --git a/parser/parser-cp2k/cp2kparser/parser.py b/parser/parser-cp2k/cp2kparser/parser.py
index 74bf4b51e0d03eaf79ace82f9a438a5aeff568c7..12c22bf74391e38de72937538cdf1cca666e5f6f 100644
--- a/parser/parser-cp2k/cp2kparser/parser.py
+++ b/parser/parser-cp2k/cp2kparser/parser.py
@@ -153,4 +153,4 @@ class CP2KParser(ParserInterface):
             )
             raise
 
-        self.main_parser = parser_class(self.parser_context.main_file, self.parser_context)
+        self.main_parser = parser_class(self.parser_context)
diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py
index 5b2bd274e075a61f556895ec3a4df1605bd64cb8..a7110a26d9cd8039fd52e041a1b8f5915a3032bc 100644
--- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py
+++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/commonparser.py
@@ -445,8 +445,8 @@ class CP2KCommonParser(CommonParser):
         # If the input file is available, parse it
         filepath = self.file_service.get_file_by_id("input")
         if filepath is not None:
-            input_parser = CP2KInputParser(filepath, self.parser_context)
-            input_parser.parse()
+            input_parser = CP2KInputParser(self.parser_context)
+            input_parser.parse(filepath)
         else:
             logger.warning("The input file of the calculation could not be found.")
 
diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py
index 3c1399dd24340c79b7e8973f8d0743676709e845..ead45326cac0dc79fe61237bb127a2647080dfec 100644
--- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py
+++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/geooptparser.py
@@ -16,10 +16,10 @@ class CP2KGeoOptParser(MainHierarchicalParser):
     """Used to parse the CP2K calculation with run types:
         -GEO_OPT/GEOMETRY_OPTIMIZATION
     """
-    def __init__(self, file_path, parser_context):
+    def __init__(self, parser_context):
         """
         """
-        super(CP2KGeoOptParser, self).__init__(file_path, parser_context)
+        super(CP2KGeoOptParser, self).__init__(parser_context)
         self.setup_common_matcher(CP2KCommonParser(parser_context))
         self.traj_iterator = None
         self.energy_reeval_quickstep = None
diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py
index 65275a074b17a934bc5ee3e9e3f44c50510a4246..55049348f672c9683dc0cf210ac7b39c4cdc83c6 100644
--- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py
+++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/inputparser.py
@@ -28,7 +28,7 @@ class CP2KInputParser(AbstractBaseParser):
     supports variables. This is currently not supported, but may be added at
     some point.
     """
-    def __init__(self, file_path, parser_context):
+    def __init__(self, parser_context):
         """
         Attributes:
             input_tree: The input structure for this version of CP2K. The
@@ -38,7 +38,7 @@ class CP2KInputParser(AbstractBaseParser):
                 variables have been stated explicitly and the additional input files have
                 been merged.
         """
-        super(CP2KInputParser, self).__init__(file_path, parser_context)
+        super(CP2KInputParser, self).__init__(parser_context)
         self.input_tree = None
         self.input_lines = None
         self.unit_mapping = {
@@ -68,16 +68,16 @@ class CP2KInputParser(AbstractBaseParser):
         self.cache_service.add("traj_add_last")
         # self.cache_service.add("electronic_structure_method")
 
-    def parse(self):
+    def parse(self, filepath):
 
         #=======================================================================
         # Preprocess to spell out variables and to include stuff from other
         # files
-        self.preprocess_input()
+        self.preprocess_input(filepath)
 
         #=======================================================================
         # Gather the information from the input file
-        self.fill_input_tree(self.file_path)
+        self.fill_input_tree(filepath)
 
         #=======================================================================
         # Parse everything in the input to cp2k specific metadata
@@ -459,14 +459,14 @@ class CP2KInputParser(AbstractBaseParser):
         input_tree_pickle_file = open(pickle_path, 'rb')
         self.input_tree = pickle.load(input_tree_pickle_file)
 
-    def preprocess_input(self):
+    def preprocess_input(self, filepath):
         """Preprocess the input file. Concatenate .inc files into the main
         input file and explicitly state all variables.
         """
         # Read the input file into memory. It shouldn't be that big so we can
         # do this easily
         input_lines = []
-        with open(self.file_path, "r") as f:
+        with open(filepath, "r") as f:
             for line in f:
                 input_lines.append(line.strip())
 
@@ -477,7 +477,7 @@ class CP2KInputParser(AbstractBaseParser):
             if line.startswith("@INCLUDE") or line.startswith("@include"):
                 split = line.split(None, 1)
                 includepath = split[1]
-                basedir = os.path.dirname(self.file_path)
+                basedir = os.path.dirname(filepath)
                 filepath = os.path.join(basedir, includepath)
                 filepath = os.path.abspath(filepath)
                 if not os.path.isfile(filepath):
diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py
index 4e126fce426709b65a3ad61941ded86f0b3ed3a6..93b25afa041d7a4c399a49c90443ce9445a9d4ba 100644
--- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py
+++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/mdparser.py
@@ -18,10 +18,10 @@ class CP2KMDParser(MainHierarchicalParser):
         -MD
         -MOLECULAR_DYNAMICS
     """
-    def __init__(self, file_path, parser_context):
+    def __init__(self, parser_context):
         """
         """
-        super(CP2KMDParser, self).__init__(file_path, parser_context)
+        super(CP2KMDParser, self).__init__(parser_context)
         self.setup_common_matcher(CP2KCommonParser(parser_context))
         self.traj_iterator = None
         self.vel_iterator = None
diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py
index ba3b529e006756613a488d9f1b9d0c1583bc8061..403f5d2f06e14bf8fbf65570077395a1a95acbdd 100644
--- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py
+++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointforceparser.py
@@ -9,13 +9,13 @@ class CP2KSinglePointForceParser(AbstractBaseParser):
     calculation. It is not exactly an ZYX file, so here we define separate
     parser.
     """
-    def __init__(self, file_path, parser_context):
-        super(CP2KSinglePointForceParser, self).__init__(file_path, parser_context)
+    def __init__(self, parser_context):
+        super(CP2KSinglePointForceParser, self).__init__(parser_context)
 
-    def parse(self):
+    def parse(self, filepath):
         start = False
         forces = []
-        with open(self.file_path) as f:
+        with open(filepath) as f:
             for line in f:
                 if line.startswith(" # Atom"):
                     start = True
diff --git a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py
index 001fc04c16f77680a2041478bc076e376133b7cd..1cf169ebac75969b004a338e716fea97f5d4fbbd 100644
--- a/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py
+++ b/parser/parser-cp2k/cp2kparser/versions/cp2k262/singlepointparser.py
@@ -13,10 +13,10 @@ class CP2KSinglePointParser(MainHierarchicalParser):
         -ENERGY
         -ENERGY_FORCE
     """
-    def __init__(self, file_path, parser_context):
+    def __init__(self, parser_context):
         """
         """
-        super(CP2KSinglePointParser, self).__init__(file_path, parser_context)
+        super(CP2KSinglePointParser, self).__init__(parser_context)
         self.setup_common_matcher(CP2KCommonParser(parser_context))
 
         #=======================================================================
@@ -54,8 +54,8 @@ class CP2KSinglePointParser(MainHierarchicalParser):
         if section["atom_forces"] is None:
             force_file = self.file_service.get_file_by_id("force_file_single_point")
             if force_file is not None:
-                force_parser = CP2KSinglePointForceParser(force_file, self.parser_context)
-                force_parser.parse()
+                force_parser = CP2KSinglePointForceParser(self.parser_context)
+                force_parser.parse(force_file)
             else:
                 logger.warning("The file containing the forces printed by ENERGY_FORCE calculation could not be found.")
 
diff --git a/regtests/regtests.py b/regtests/regtests.py
index 5da0635207c5e3a3ff6d06d8208760d6a1389945..a64149cc25603bd9442b6c28d6d0a6d714c03f6f 100644
--- a/regtests/regtests.py
+++ b/regtests/regtests.py
@@ -17,8 +17,8 @@ def get_result(folder, metaname=None):
     """
     dirname = os.path.dirname(__file__)
     filename = os.path.join("cp2k_{}".format(VERSION), dirname, folder, "unittest.out")
-    parser = CP2KParser(filename, None, debug=True, log_level=logging.CRITICAL)
-    results = parser.parse()
+    parser = CP2KParser(None, debug=True, log_level=logging.CRITICAL)
+    results = parser.parse(filename)
 
     if metaname is None:
         return results
@@ -32,7 +32,7 @@ class TestErrors(unittest.TestCase):
     def test_no_file(self):
         """File is not no present.
         """
-        with self.assertRaises(IOError):
+        with self.assertRaises(ValueError):
             get_result("errors/no_file", "XC_functional")
 
     def test_invalid_file(self):