diff --git a/parser/parser-cp2k/cp2karser.egg-info/PKG-INFO b/parser/parser-cp2k/cp2karser.egg-info/PKG-INFO
new file mode 100644
index 0000000000000000000000000000000000000000..4733d8bdd5557572100ac7eaf494a6901e0193cb
--- /dev/null
+++ b/parser/parser-cp2k/cp2karser.egg-info/PKG-INFO
@@ -0,0 +1,10 @@
+Metadata-Version: 1.0
+Name: cp2karser
+Version: 0.1
+Summary: NoMaD parser implementation for CP2K
+Home-page: UNKNOWN
+Author: Lauri Himanen
+Author-email: lauri.himanen@gmail.com
+License: GPL3
+Description: UNKNOWN
+Platform: UNKNOWN
diff --git a/parser/parser-cp2k/cp2karser.egg-info/SOURCES.txt b/parser/parser-cp2k/cp2karser.egg-info/SOURCES.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c2661e988366a716a00680bad1e363601b005c86
--- /dev/null
+++ b/parser/parser-cp2k/cp2karser.egg-info/SOURCES.txt
@@ -0,0 +1,10 @@
+setup.py
+cp2karser.egg-info/PKG-INFO
+cp2karser.egg-info/SOURCES.txt
+cp2karser.egg-info/dependency_links.txt
+cp2karser.egg-info/not-zip-safe
+cp2karser.egg-info/requires.txt
+cp2karser.egg-info/top_level.txt
+cp2kparser/__init__.py
+cp2kparser/__main__.py
+cp2kparser/scalainterface.py
\ No newline at end of file
diff --git a/parser/parser-cp2k/cp2karser.egg-info/dependency_links.txt b/parser/parser-cp2k/cp2karser.egg-info/dependency_links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/parser/parser-cp2k/cp2karser.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/parser/parser-cp2k/cp2karser.egg-info/not-zip-safe b/parser/parser-cp2k/cp2karser.egg-info/not-zip-safe
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/parser/parser-cp2k/cp2karser.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
diff --git a/parser/parser-cp2k/cp2karser.egg-info/requires.txt b/parser/parser-cp2k/cp2karser.egg-info/requires.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b029f20d6692b303b91e128fc9ece5cc23f2cbd4
--- /dev/null
+++ b/parser/parser-cp2k/cp2karser.egg-info/requires.txt
@@ -0,0 +1,3 @@
+pint
+numpy
+ase
\ No newline at end of file
diff --git a/parser/parser-cp2k/cp2karser.egg-info/top_level.txt b/parser/parser-cp2k/cp2karser.egg-info/top_level.txt
new file mode 100644
index 0000000000000000000000000000000000000000..220915961d0ae656de630e7f4b069eea66770a61
--- /dev/null
+++ b/parser/parser-cp2k/cp2karser.egg-info/top_level.txt
@@ -0,0 +1 @@
+cp2kparser
diff --git a/parser/parser-cp2k/cp2kparser/__init__.py b/parser/parser-cp2k/cp2kparser/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..0a1233ac13e9e49e8a3e57dea359326879e2dd0a
--- /dev/null
+++ b/parser/parser-cp2k/cp2kparser/__init__.py
@@ -0,0 +1,2 @@
+import cp2kparser.utils.logconfig
+from cp2kparser.parsing.parser import CP2KParser
diff --git a/parser/parsercp2k/__main__.py b/parser/parser-cp2k/cp2kparser/__main__.py
similarity index 100%
rename from parser/parsercp2k/__main__.py
rename to parser/parser-cp2k/cp2kparser/__main__.py
diff --git a/parser/parsercp2k/parsing/__init__.py b/parser/parser-cp2k/cp2kparser/parsing/__init__.py
similarity index 100%
rename from parser/parsercp2k/parsing/__init__.py
rename to parser/parser-cp2k/cp2kparser/parsing/__init__.py
diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/__init__.py b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/__init__.py
similarity index 100%
rename from parser/parsercp2k/parsing/cp2kinputenginedata/__init__.py
rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/__init__.py
diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/cp2k_input.xml b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/cp2k_input.xml
similarity index 100%
rename from parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/cp2k_input.xml
rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/cp2k_input.xml
diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/cp2k_input_tree.pickle b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/cp2k_input_tree.pickle
similarity index 100%
rename from parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/cp2k_input_tree.pickle
rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/cp2k_input_tree.pickle
diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/references.html b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/references.html
similarity index 100%
rename from parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/references.html
rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/references.html
diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/units.html b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/units.html
similarity index 100%
rename from parser/parsercp2k/parsing/cp2kinputenginedata/cp2k_262/units.html
rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/cp2k_262/units.html
diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/input_tree.py b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/input_tree.py
similarity index 100%
rename from parser/parsercp2k/parsing/cp2kinputenginedata/input_tree.py
rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/input_tree.py
diff --git a/parser/parsercp2k/parsing/cp2kinputenginedata/xmlpreparser.py b/parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/xmlpreparser.py
similarity index 100%
rename from parser/parsercp2k/parsing/cp2kinputenginedata/xmlpreparser.py
rename to parser/parser-cp2k/cp2kparser/parsing/cp2kinputenginedata/xmlpreparser.py
diff --git a/parser/parsercp2k/parsing/csvparsing.py b/parser/parser-cp2k/cp2kparser/parsing/csvparsing.py
similarity index 100%
rename from parser/parsercp2k/parsing/csvparsing.py
rename to parser/parser-cp2k/cp2kparser/parsing/csvparsing.py
diff --git a/parser/parsercp2k/parsing/implementations.py b/parser/parser-cp2k/cp2kparser/parsing/implementations.py
similarity index 98%
rename from parser/parsercp2k/parsing/implementations.py
rename to parser/parser-cp2k/cp2kparser/parsing/implementations.py
index 9ea3cf6a97cee539421e831cc0d32691e7f489b7..7c4ccc8653685763ffced302d5c375357bc2b1b9 100644
--- a/parser/parsercp2k/parsing/implementations.py
+++ b/parser/parser-cp2k/cp2kparser/parsing/implementations.py
@@ -1,11 +1,11 @@
 import re
 import os
 import logging
-from parsercp2k.parsing.csvparsing import CSVParser
-from parsercp2k.parsing.inputparsing import CP2KInputParser
-from parsercp2k.parsing.cp2kinputenginedata.input_tree import CP2KInput
-from parsercp2k.parsing.outputparsing import *
-from parsercp2k.utils.baseclasses import ParserImplementation
+from cp2kparser.parsing.csvparsing import CSVParser
+from cp2kparser.parsing.inputparsing import CP2KInputParser
+from cp2kparser.parsing.cp2kinputenginedata.input_tree import CP2KInput
+from cp2kparser.parsing.outputparsing import *
+from cp2kparser.utils.baseclasses import ParserImplementation
 from nomadcore.coordinate_reader import CoordinateReader
 logger = logging.getLogger(__name__)
 
diff --git a/parser/parsercp2k/parsing/inputparsing.py b/parser/parser-cp2k/cp2kparser/parsing/inputparsing.py
similarity index 100%
rename from parser/parsercp2k/parsing/inputparsing.py
rename to parser/parser-cp2k/cp2kparser/parsing/inputparsing.py
diff --git a/parser/parsercp2k/parsing/outputparsing.py b/parser/parser-cp2k/cp2kparser/parsing/outputparsing.py
similarity index 99%
rename from parser/parsercp2k/parsing/outputparsing.py
rename to parser/parser-cp2k/cp2kparser/parsing/outputparsing.py
index 6ae00584388515760916ba7ad5629d76c736719c..f051ef5e568de72d574067dc6ca61570e382f66d 100644
--- a/parser/parsercp2k/parsing/outputparsing.py
+++ b/parser/parser-cp2k/cp2kparser/parsing/outputparsing.py
@@ -204,7 +204,7 @@ class CP2KOutputParser262(object):
             cell[1, :] = b_comp
             cell[2, :] = c_comp
 
-            backend.addArrayValues("cell", cell, unit="angstrom")
+            backend.addArrayValues("simulation_cell", cell, unit="angstrom")
 
         # Get the number of atoms
         numbers = section["cp2k_section_numbers"]
diff --git a/parser/parsercp2k/parser.py b/parser/parser-cp2k/cp2kparser/parsing/parser.py
similarity index 88%
rename from parser/parsercp2k/parser.py
rename to parser/parser-cp2k/cp2kparser/parsing/parser.py
index be9428e25e94078a46e24d0d3d89c6932789c1d4..36fca1009cd3f080f6356ecc9a664f8b4a972849 100644
--- a/parser/parsercp2k/parser.py
+++ b/parser/parser-cp2k/cp2kparser/parsing/parser.py
@@ -1,8 +1,7 @@
 import re
 import logging
-import parsercp2k.setup_paths
-from parsercp2k.utils.baseclasses import Parser
-from parsercp2k.parsing.implementations import *
+from cp2kparser.utils.baseclasses import Parser
+from cp2kparser.parsing.implementations import *
 logger = logging.getLogger(__name__)
 
 
@@ -71,10 +70,3 @@ class CP2KParser(Parser):
         the nomadtoolkit.
         """
         return "cp2k.nomadmetainfo.json"
-
-
-#===============================================================================
-# This is what gets run when the scala layer calls for this parser
-if __name__ == "__main__":
-    cp2kparser = CP2KParser()
-    cp2kparser.scala_main_function()
diff --git a/parser/parser-cp2k/cp2kparser/scalainterface.py b/parser/parser-cp2k/cp2kparser/scalainterface.py
new file mode 100644
index 0000000000000000000000000000000000000000..bbb946a7101cae8e7689a95c57810b9e50225d56
--- /dev/null
+++ b/parser/parser-cp2k/cp2kparser/scalainterface.py
@@ -0,0 +1,37 @@
+"""
+This is the access point to the parser for the scala layer in the nomad project.
+"""
+import os
+from cp2kparser import CP2KParser
+from nomadcore.local_meta_info import loadJsonFile, InfoKindEl
+from nomadcore.simple_parser import mainFunction
+
+# This is what gets run when the scala layer calls for this parser. Currently
+# only the outputparser is used because the scala layer doesn't support
+# auxiliary files. Also the version identification is skipped and the structure
+# used in CP2K 2.6.2 is assumed.
+if __name__ == "__main__":
+    cp2kparser = CP2KParser()
+
+    # Get the outputparser class
+    outputparser = globals()["CP2KOutputParser{}".format("262")](None, None)
+
+    # Setup the metainfos
+    metaInfoPath = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../../../nomad-meta-info/meta_info/nomad_meta_info/{}".format(cp2kparser.get_metainfo_filename())))
+    metaInfoEnv, warnings = loadJsonFile(filePath=metaInfoPath, dependencyLoader=None, extraArgsHandling=InfoKindEl.ADD_EXTRA_ARGS, uri=None)
+
+    # Parser info
+    parserInfo = {'name': 'cp2k-parser', 'version': '1.0'}
+
+    # Adjust caching of metadata
+    cachingLevelForMetaName = outputparser.cachingLevelForMetaName
+
+    # Supercontext is where the objet where the callback functions for
+    # section closing are found
+    superContext = outputparser
+
+    # Main file description is the SimpleParser tree
+    mainFileDescription = outputparser.outputstructure
+
+    # Use the main function from nomadcore
+    mainFunction(mainFileDescription, metaInfoEnv, parserInfo, superContext=superContext, cachingLevelForMetaName=cachingLevelForMetaName, onClose={})
diff --git a/parser/parsercp2k/utils/__init__.py b/parser/parser-cp2k/cp2kparser/utils/__init__.py
similarity index 100%
rename from parser/parsercp2k/utils/__init__.py
rename to parser/parser-cp2k/cp2kparser/utils/__init__.py
diff --git a/parser/parsercp2k/utils/baseclasses.py b/parser/parser-cp2k/cp2kparser/utils/baseclasses.py
similarity index 89%
rename from parser/parsercp2k/utils/baseclasses.py
rename to parser/parser-cp2k/cp2kparser/utils/baseclasses.py
index c6a5450825438e26f303ca1473fab7c9f4454cdf..34aff6e42ad72334dd69cb042765d400ed20e9fc 100644
--- a/parser/parsercp2k/utils/baseclasses.py
+++ b/parser/parser-cp2k/cp2kparser/utils/baseclasses.py
@@ -3,11 +3,8 @@ import sys
 import logging
 import StringIO
 from abc import ABCMeta, abstractmethod
-from parsercp2k.parsing.outputparsing import *
 from nomadcore.simple_parser import SimpleParserBuilder, defaultParseFile, extractOnCloseTriggers
-from nomadcore.local_meta_info import loadJsonFile, InfoKindEl
 from nomadcore.caching_backend import CachingLevel, ActiveBackend
-from nomadcore.simple_parser import mainFunction
 logger = logging.getLogger(__name__)
 
 
@@ -16,8 +13,11 @@ class Parser(object):
     """A base class for nomad parsers.
 
     Attributes:
-        self.implementation: an object that actually does the parsing and is
+        implementation: an object that actually does the parsing and is
             setup by this class based on the given contents.
+        parser_context: A wrapper class for all the parser related information.
+            This is contructed here and then passed onto the different
+            implementations.
     """
     __metaclass__ = ABCMeta
     parser_name = None
@@ -97,39 +97,12 @@ class Parser(object):
             logger.error("No parser implementation has been setup.")
 
         # Write the starting bracket
-        self.backend.fileOut.write("[")
+        self.implementation.backend.fileOut.write("[")
 
         self.implementation.parse()
 
         # Write the ending bracket
-        self.backend.fileOut.write("]\n")
-
-    def scala_main_function(self):
-        """This function gets called when the scala calls for a parser.
-        """
-
-        # Get the outputparser class
-        outputparser = globals()["CP2KOutputParser{}".format("262")](None, None)
-
-        # Setup the metainfos
-        metaInfoPath = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../../../nomad-meta-info/meta_info/nomad_meta_info/{}".format(self.get_metainfo_filename())))
-        metaInfoEnv, warnings = loadJsonFile(filePath=metaInfoPath, dependencyLoader=None, extraArgsHandling=InfoKindEl.ADD_EXTRA_ARGS, uri=None)
-
-        # Parser info
-        parserInfo = {'name': 'cp2k-parser', 'version': '1.0'}
-
-        # Adjust caching of metadata
-        cachingLevelForMetaName = outputparser.cachingLevelForMetaName
-
-        # Supercontext is where the objet where the callback functions for
-        # section closing are found
-        superContext = outputparser
-
-        # Main file description is the SimpleParser tree
-        mainFileDescription = outputparser.outputstructure
-
-        # Use the main function from nomadcore
-        mainFunction(mainFileDescription, metaInfoEnv, parserInfo, superContext=superContext, cachingLevelForMetaName=cachingLevelForMetaName, onClose={})
+        self.implementation.backend.fileOut.write("]\n")
 
 
 #===============================================================================
diff --git a/parser/parsercp2k/utils/logconfig.py b/parser/parser-cp2k/cp2kparser/utils/logconfig.py
similarity index 100%
rename from parser/parsercp2k/utils/logconfig.py
rename to parser/parser-cp2k/cp2kparser/utils/logconfig.py
diff --git a/parser/parsercp2k/utils/testing.py b/parser/parser-cp2k/cp2kparser/utils/testing.py
similarity index 100%
rename from parser/parsercp2k/utils/testing.py
rename to parser/parser-cp2k/cp2kparser/utils/testing.py
diff --git a/parser/setup.py b/parser/parser-cp2k/setup.py
similarity index 91%
rename from parser/setup.py
rename to parser/parser-cp2k/setup.py
index 4282820cf99ac1d15b3935b5b2155c6275c0434d..03a5a1dec528a2f0155384f86e0d5e090cab80ea 100644
--- a/parser/setup.py
+++ b/parser/parser-cp2k/setup.py
@@ -5,7 +5,7 @@ from setuptools import setup, find_packages
 def main():
     # Start package setup
     setup(
-        name="parsercp2k",
+        name="cp2karser",
         version="0.1",
         include_package_data=True,
         package_data={
@@ -15,7 +15,7 @@ def main():
         author="Lauri Himanen",
         author_email="lauri.himanen@gmail.com",
         license="GPL3",
-        packages=["parsercp2k"],
+        packages=["cp2kparser"],
         install_requires=[
             'pint',
             'numpy',
diff --git a/parser/parsercp2k/__init__.py b/parser/parsercp2k/__init__.py
deleted file mode 100644
index 26705c5913af466df6a00563f5e0b30f72ff853c..0000000000000000000000000000000000000000
--- a/parser/parsercp2k/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-import parsercp2k.utils.logconfig
-from parsercp2k.parser import CP2KParser
diff --git a/parser/parsercp2k/parsing/autoparser.py b/parser/parsercp2k/parsing/autoparser.py
deleted file mode 100644
index bebecb473bc20c15284aed8e83cb140f5d4f58d8..0000000000000000000000000000000000000000
--- a/parser/parsercp2k/parsing/autoparser.py
+++ /dev/null
@@ -1,26 +0,0 @@
-import sys
-import os
-import cStringIO
-from parsercp2k.implementation.cp2kparserversioner import CP2KParserVersioner
-from parsercp2k.generics.testing import get_parser
-
-
-#===============================================================================
-def parse_path(path, metainfo_to_keep=[], metainfo_to_skip=[], dump=False):
-    """Generates a cp2k parser using the tools defined in testing.py and parses
-    the contents in the given path
-    """
-    # If a dump is requested, the results will be saved to a file under the
-    # current folder
-    if dump:
-        stream = cStringIO.StringIO()
-    else:
-        stream = sys.stdout
-    parserbuilder = CP2KParserVersioner
-    metainfopath = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../../nomad-meta-info/meta_info/nomad_meta_info/cp2k.nomadmetainfo.json"))
-    parser = get_parser(path, metainfopath,  parserbuilder, metainfo_to_keep, metainfo_to_skip, stream)
-    parser.parse()
-
-    if dump:
-        outputfile = open(path + "/parseroutput.json", "w")
-        outputfile.write(stream.getvalue())
diff --git a/parser/parsercp2k/setup_paths.py b/parser/parsercp2k/setup_paths.py
deleted file mode 100644
index 89200e03930e073d5e934adb59df608663d89629..0000000000000000000000000000000000000000
--- a/parser/parsercp2k/setup_paths.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import sys
-import os
-baseDir = os.path.dirname(os.path.abspath(__file__))
-commonDir = os.path.normpath(os.path.join(baseDir, "../../../../python-common/common/python"))
-
-if os.path.exists(commonDir):
-    if not commonDir in sys.path:
-        sys.path.insert(0, commonDir)