diff --git a/wien2kparser/parser_wien2k.py b/wien2kparser/parser_wien2k.py
index d2c53f8fb0cdd9d4ee25b047602bda433f12abf3..f496ada3cd1e8b91b9a7eb0ae01ceaccf22be3f5 100644
--- a/wien2kparser/parser_wien2k.py
+++ b/wien2kparser/parser_wien2k.py
@@ -13,9 +13,9 @@ import wien2kparser.wien2k_parser_in1c as wien2k_parser_in1c
 import wien2kparser.wien2k_parser_in2c as wien2k_parser_in2c
 import wien2kparser.wien2k_parser_in1 as wien2k_parser_in1
 import wien2kparser.wien2k_parser_in2 as wien2k_parser_in2
-import wien2kparser.setup_paths as setup_paths
 import logging as _logging
 
+from nomad.parsing.legacy import CoESimpleMatcherParser
 
 ################################################################
 # This is the parser for the main output file (.scf) of WIEN2k.
@@ -266,47 +266,26 @@ mainFileDescription = SM(
     ])
 
 
-# which values to cache or forward (mapping meta name -> CachingLevel)
+class Wien2kParser(CoESimpleMatcherParser):
 
-cachingLevelForMetaName = {
+    def metainfo_env(self):
+        from .metainfo import m_env
+        return m_env
 
-    "XC_functional_name": CachingLevel.ForwardAndCache,
-    "energy_total": CachingLevel.ForwardAndCache
+    def create_super_context(self):
+        return Wien2kContext()
 
- }
+    def create_simple_matcher(self):
+        return mainFileDescription
 
-# loading metadata from nomad-meta-info/meta_info/nomad_meta_info/fhi_aims.nomadmetainfo.json
+    def create_parser_description(self):
+        return {
+            "name": "Wien2k",
+            "version": "1.0"
+        }
 
-parserInfo = {
-  "name": "Wien2k",
-  "version": "1.0"
-}
-
-class Wien2kParser():
-    """ A proper class envolop for running this parser from within python. """
-    def __init__(self, backend, **kwargs):
-        self.backend_factory = backend
-
-    def parse(self, mainfile):
-        from unittest.mock import patch
-        _logging.getLogger('nomadcore').setLevel(_logging.WARNING)
-        backend = self.backend_factory("wien2k.nomadmetainfo.json")
-        with patch.object(sys, 'argv', ['<exe>', '--uri', 'nmd://uri', mainfile]):
-            mainFunction(
-                mainFileDescription,
-                None,
-                parserInfo,
-                cachingLevelForMetaName = cachingLevelForMetaName,
-                superContext=Wien2kContext(),
-                superBackend=backend)
-
-        return backend
-
-
-if __name__ == "__main__":
-    import metainfo
-    metaInfoPath = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(metainfo.__file__)), "wien2k.nomadmetainfo.json"))
-    metaInfoEnv, warnings = loadJsonFile(filePath = metaInfoPath, dependencyLoader = None, extraArgsHandling = InfoKindEl.ADD_EXTRA_ARGS, uri = None)
-
-    superContext = Wien2kContext()
-    mainFunction(mainFileDescription, metaInfoEnv, parserInfo, superContext = superContext)
+    def create_caching_levels(self):
+        return {
+            "XC_functional_name": CachingLevel.ForwardAndCache,
+            "energy_total": CachingLevel.ForwardAndCache
+        }
diff --git a/wien2kparser/setup_paths.py b/wien2kparser/setup_paths.py
deleted file mode 100644
index ed289a03788bc3b3a21431c039bb1668ea8f961d..0000000000000000000000000000000000000000
--- a/wien2kparser/setup_paths.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2016-2018 Daria 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.
-#   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.
-
-import sys, os, os.path
-baseDir = os.path.dirname(os.path.abspath(__file__))
-commonDir = os.path.normpath(os.path.join(baseDir,"../../../../python-common/common/python"))
-
-if not commonDir in sys.path:
-    sys.path.insert(0, commonDir)
diff --git a/wien2kparser/wien2k_parser_in0.py b/wien2kparser/wien2k_parser_in0.py
index f3de4f7c8ec8b7e6d311746b6b67ce9d112c5e67..73c49c6dd98d99ac24ab7e94d6dccf2965453abb 100644
--- a/wien2kparser/wien2k_parser_in0.py
+++ b/wien2kparser/wien2k_parser_in0.py
@@ -1,5 +1,4 @@
 from builtins import object
-import wien2kparser.setup_paths as 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
diff --git a/wien2kparser/wien2k_parser_in1.py b/wien2kparser/wien2k_parser_in1.py
index e8dfdcdd27e04b2499dd51e8d5aee4241926acd7..96805243290cb9a46427dcff9666d709f54a64ec 100644
--- a/wien2kparser/wien2k_parser_in1.py
+++ b/wien2kparser/wien2k_parser_in1.py
@@ -1,5 +1,4 @@
 from builtins import object
-import wien2kparser.setup_paths as 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
diff --git a/wien2kparser/wien2k_parser_in1c.py b/wien2kparser/wien2k_parser_in1c.py
index 95c862e3eff825f68dfb714a2f807497a19b19d8..1a9ce54b91d9815887998ffcff15aeac922732dc 100644
--- a/wien2kparser/wien2k_parser_in1c.py
+++ b/wien2kparser/wien2k_parser_in1c.py
@@ -1,5 +1,4 @@
 from builtins import object
-import wien2kparser.setup_paths as 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
diff --git a/wien2kparser/wien2k_parser_in2.py b/wien2kparser/wien2k_parser_in2.py
index 452918aba7ddaeb71e9807c423d0296c717b0234..46a3f7546fd0109bc147ddb988e6b3ccf27014c6 100644
--- a/wien2kparser/wien2k_parser_in2.py
+++ b/wien2kparser/wien2k_parser_in2.py
@@ -1,5 +1,4 @@
 from builtins import object
-import wien2kparser.setup_paths as 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
diff --git a/wien2kparser/wien2k_parser_in2c.py b/wien2kparser/wien2k_parser_in2c.py
index 693a62d6582c1b99d0e738e6ef59b9ff46f4532d..07a10ae2101a4a85169bec2b851c49ce4d0f4f4c 100644
--- a/wien2kparser/wien2k_parser_in2c.py
+++ b/wien2kparser/wien2k_parser_in2c.py
@@ -1,5 +1,4 @@
 from builtins import object
-import wien2kparser.setup_paths as 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
diff --git a/wien2kparser/wien2k_parser_struct.py b/wien2kparser/wien2k_parser_struct.py
index 27ffa5267bf66d5fd0332392f85853abe5c696be..c6b6627f5862b93190863b3dd83db5d9407af1ce 100644
--- a/wien2kparser/wien2k_parser_struct.py
+++ b/wien2kparser/wien2k_parser_struct.py
@@ -1,5 +1,4 @@
 from builtins import object
-import wien2kparser.setup_paths as 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