diff --git a/aptfimparser/__init__.py b/aptfimparser/__init__.py
new file mode 100755
index 0000000000000000000000000000000000000000..5a190f8aa993224acb895e770bd25b3bb26593b8
--- /dev/null
+++ b/aptfimparser/__init__.py
@@ -0,0 +1,131 @@
+# Copyright 2016-2019 Markus Scheidgen, Markus Kühbach
+#   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
+import os.path
+import json
+import ase
+import re
+import numpy as np
+from datetime import datetime
+
+from nomadcore.simple_parser import SimpleMatcher
+from nomadcore.baseclasses import ParserInterface, AbstractBaseParser
+
+from nomad.parsing import LocalBackend
+
+
+class APTFIMParserInterface(ParserInterface):
+    def get_metainfo_filename(self):
+        """
+        The parser specific metainfo. To include other metadata definitions, use
+        the 'dependencies' key to refer to other local nomadmetainfo.json files or
+        to nomadmetainfo.json files that are part of the general nomad-meta-info
+        submodule (i.e. ``dependencies/nomad-meta-info``).
+         """
+        return os.path.join(os.path.dirname(__file__), 'aptfim.nomadmetainfo.json')
+
+    def get_parser_info(self):
+        """ Basic info about parser used in archive data and logs. """
+        return {
+            'name': 'aptfimparser',
+            'version': '0.1.0'
+        }
+
+    def setup_version(self):
+        """ Can be used to call :func:`setup_main_parser` differently for different code versions. """
+        self.setup_main_parser(None)
+
+    def setup_main_parser(self, _):
+        """ Setup the actual parser (behind this interface) """
+        self.main_parser = APTFIMParser(self.parser_context)
+
+
+class APTFIMParser(AbstractBaseParser):
+
+    def parse(self, filepath):
+        backend = self.parser_context.super_backend
+
+        with open(filepath, 'rt') as f:
+            data = json.load(f)
+            #print(data)
+
+        # # You need to open sections before you can add values or sub sections to it.
+        # # The returned 'gid' can be used to reference a specific section if multiple
+        # # sections of the same type are opened.
+        #test_gid = backend.openSection('experiment_cantext')
+        #backend.addValue('context_headxx', data.get('experiment_type'))
+        #backend.closeSection('experiment_context', test_gid)
+
+        root_gid = backend.openSection('section_experiment')
+        # # Values do not necessarily have to be read from the parsed file.
+        # # The backend will check the type of the given value agains the metadata definition.
+        # backend.addValue('experiment_time', int(datetime.strptime(data.get('date'), '%d.%M.%Y').timestamp()))
+        #
+        # # Read data .
+#        data_gid = backend.openSection('section_context')
+        #data_gid = backend.openSection('section_experiment')
+        # addValue
+        # first argument STRING IDENTIFIER IN OUTPUT JSON KEYWORDS from aptfim.nomadmetainfo.json (ie. the generated parser result JSON)
+        # second argument STRING IDENTIFIER IN INPUT JSON (ie. the small META DATA FILE TO THE DATASET
+        #backend.addValue('data_repository_name', data.get('data_repository_name'))
+        #backend.addValue('data_repository_url', data.get('data_repository_url'))
+        #backend.addValue('data_preview_url', data.get('data_preview_url'))
+#        backend.addValue('real_one', data.get('experiment_typpe'))
+#        backend.closeSection('section_context', data_gid)
+
+        # Read general tool environment details
+        # general_gid = backend.openSection('section_experiment_general_parameters')
+        
+        backend.addValue('experiment_method', data.get('experiment_method'))
+        backend.addValue('experiment_location', data.get('experiment_location'))
+        backend.addValue('experiment_facility_institution', data.get('experiment_facility_institution'))
+        backend.addValue('experiment_tool_info', data.get('instrument_info')) ###test here the case that input.json keyword is different to output.json
+        
+#        backend.addValue('experiment_data_global_start', np.array(re.findall(r"[\w']+", data.get('experiment_data_global_start'))))  ####
+#        backend.addValue('experiment_data_global_end', np.array(re.findall(r"[\w']+", data.get('experiment_data_global_end'))))  ####
+#        backend.addValue('experiment_data_local_start', np.array(re.findall(r"[\w']+", data.get('experiment_data_local_start')))) ####
+        
+#        backend.addValue('experiment_operation_method', data.get('experiment_operation_method'))
+#        backend.addValue('experiment_imaging_method', data.get('experiment_imaging_method'))
+
+        # Read parameters related to sample
+#        backend.addValue('specimen_description', data.get('specimen_description'))
+#        backend.addValue('specimen_microstructure', data.get('specimen_microstructure'))
+#        backend.addValue('specimen_constitution', data.get('specimen_constitution'))
+        
+        #### parse chemical composition
+        
+        ### measured_pulse_voltage for instance should be a conditional read
+#        backend.addValue('measured_number_ions_evaporated', data.get('measured_number_ions_evaporated'))
+#        backend.addValue('measured_detector_hit_pos', data.get('measured_detector_hit_pos'))
+#        backend.addValue('measured_detector_hit_mult', data.get('measured_detector_hit_mult'))
+#        backend.addValue('measured_detector_dead_pulses', data.get('measured_detector_dead_pulses'))
+#       backend.addValue('measured_time_of_flight', data.get('measured_time_of_flight'))
+#        backend.addValue('measured_standing_voltage', data.get('measured_standing_voltage'))
+#        backend.addValue('measured_pulse_voltage', data.get('measured_pulse_voltage'))
+
+        
+        # To add arrays (vectors, matrices, etc.) use addArrayValues and provide a
+        # numpy array. The shape of the numpy array must match the shape defined in
+        # the respective metadata definition.
+
+
+        # Close sections in the reverse order
+        #backend.closeSection('section_experiment', data_gid)
+        #backend.closeSection('section_data', data_gid)
+        backend.closeSection('section_experiment', root_gid)
+        # backend.closeSection('section_experiment_general_parameters', general_gid)
+        # backend.closeSection('section_experiment_source_parameters', source_gid)
+        # backend.closeSection('section_experiment_detector_parameters', detector_gid)
+        # backend.closeSection('section_experiment_sample_parameters', sample_gid)
diff --git a/aptfimparser/__main__.py b/aptfimparser/__main__.py
new file mode 100755
index 0000000000000000000000000000000000000000..fbbe93d644ce1e56d85572e672053a86b97c7c79
--- /dev/null
+++ b/aptfimparser/__main__.py
@@ -0,0 +1,26 @@
+# Copyright 2016-2018 Markus Scheidgen
+#   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
+
+from nomad.parsing import LocalBackend
+from aptfimparser import APTFIMParserInterface
+
+if __name__ == "__main__":
+    # instantiate the parser via its interface with a LocalBackend
+    parser = APTFIMParserInterface(backend=LocalBackend)
+    # call the actual parsing with the given mainfile
+    parser.parse(sys.argv[1])
+    # print the results stored in the LocalBackend
+    parser.parser_context.super_backend.write_json(
+        sys.stdout, pretty=True, root_sections=['section_experiment'])
diff --git a/aptfimparser/aptfim.nomadmetainfo.json b/aptfimparser/aptfim.nomadmetainfo.json
new file mode 100755
index 0000000000000000000000000000000000000000..659396a0440e02847e11ec6c19d355ba58736a18
--- /dev/null
+++ b/aptfimparser/aptfim.nomadmetainfo.json
@@ -0,0 +1,214 @@
+{
+  "type": "nomad_meta_info_1_0",
+  "description": "Metadata for an atom probe tomography or field ion microscopy experiment.",
+  "dependencies":[
+    {
+      "metainfoPath":"general.nomadmetainfo.json"
+    },
+    {
+      "metainfoPath":"general.experimental.nomadmetainfo.json"
+    }
+  ],
+  "metaInfos": [
+    {
+      "description": "String identifier aka name of the repository where the raw data to the experiment is available",
+      "name": "data_repository_name",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "URL of this repository",
+      "name": "data_repository_url",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {      "description": "Thumbnail image informing about the experiment",
+      "name": "data_preview_url",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Shape of the None/Null object",
+      "name": "none_shape",
+      "dtypeStr": "i",
+      "kindStr": "type_dimension",
+      "shape": [],
+      "superNames": ["section_experiment"]
+    },
+    {
+      "description": "Full name of the experimental method in use",
+      "name": "experiment_method",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Name of the city and country the experiment took place, format 'Country, City'",
+      "name": "experiment_location",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Name of the institution hosting the experimental facility",
+      "name": "experiment_facility_institution",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Name of the equipment, instrument with which the experiment was performed e.g. LEAP5000XS",
+      "name": "experiment_tool_info",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "UTC start time of the experiment, format 'DD.MM.YYYY - HH.MM.SS'",
+      "name": "experiment_date_global_start",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "C"
+    },
+    {
+      "description": "UTC end time of the experiment, format 'DD.MM.YYYY - HH.MM.SS'",
+      "name": "experiment_date_global_end",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "C"
+    },
+    {
+      "description": "Local start time of the experiment, format 'DD.MM.YYYY - HH.MM.SS'",
+      "name": "experiment_date_local_start",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "C"
+    },
+    {
+      "description": "Operation mode of the instrument (APT, FIM or combination)",
+      "name": "experiment_operation_method",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Pulsing method to enforce a controlled ion evaporation sequence",
+      "name": "experiment_imaging_method",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Sample description e.g. pure W wire samples trial 2",
+      "name": "specimen_description",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Number of elements (disjoint element names) expected",
+      "name": "number_of_elements",
+      "dtypeStr": "i",
+      "kindStr": "type_dimension",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "List of periodic table names expected contained in dataset",
+      "name": "specimen_chemistry",
+      "dtypeStr": "C",
+      "shape": ["number_of_elements"],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Qualitative type of specimen and microstructure analyzed (e.g. thin films, nano objects, single crystal, polycrystal)",
+      "name": "specimen_microstructure",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Qualitative information how many phases in the specimen",
+      "name": "specimen_constitution",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+	{
+      "description": "Number of ions successfully evaporated",
+      "name": "measured_number_ions_evaporated",
+      "dtypeStr": "i",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "1"
+    },
+    {
+      "description": "Detector hit positions x and y",
+      "name": "measured_detector_hit_pos",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "mm, mm"
+    },
+    {
+      "description": "Detector hit multiplicity",
+      "name": "measured_detector_hit_mult",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "1"
+    },
+    {
+      "description": "Detector number of dead pulses",
+      "name": "measured_detector_dead_pulses",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "1"
+    },
+    {
+      "description": "Raw ion time of flight",
+      "name": "measured_time_of_flight",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "ns"
+    },
+    {
+      "description": "Standing voltage",
+      "name": "measured_standing_voltage",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "V"
+    },
+    {
+      "description": "Pulse voltage",
+      "name": "measured_pulse_voltage",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "V"
+    }
+  ]
+}
diff --git a/parsing.result.output.json b/parsing.result.output.json
new file mode 100755
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/questions/aptfim.nomadmetainfo.keyerror.json b/questions/aptfim.nomadmetainfo.keyerror.json
new file mode 100755
index 0000000000000000000000000000000000000000..8919969c287881bb2146c66fda2c92d8e045bda7
--- /dev/null
+++ b/questions/aptfim.nomadmetainfo.keyerror.json
@@ -0,0 +1,222 @@
+{
+  "type": "nomad_meta_info_1_0",
+  "description": "Metadata for an atom probe tomography or field ion microscopy experiment.",
+  "dependencies":[
+    {
+      "metainfoPath":"general.nomadmetainfo.json"
+    },
+    {
+      "metainfoPath":"general.experimental.nomadmetainfo.json"
+    }
+  ],
+  "metaInfos": [
+    {
+      "description": "String identifier aka name of the repository where the raw data to the experiment is available",
+      "name": "experiment_typpe",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_context"]
+    },
+    {
+      "description": "String identifier aka name of the repository where the raw data to the experiment is available",
+      "name": "data_repository_name",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "URL of this repository",
+      "name": "where",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Thumbnail image informing about the experiment",
+      "name": "data_preview_url",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Shape of the None/Null object",
+      "name": "none_shape",
+      "dtypeStr": "i",
+      "kindStr": "type_dimension",
+      "shape": [],
+      "superNames": ["section_experiment"]
+    },
+    {
+      "description": "Full name of the experimental method in use",
+      "name": "experiment_method",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Name of the city and country the experiment took place, format 'Country, City'",
+      "name": "experiment_location",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Name of the institution hosting the experimental facility",
+      "name": "experiment_facility_institution",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Name of the equipment, instrument with which the experiment was performed e.g. LEAP5000XS",
+      "name": "experiment_tool_info",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "UTC start time of the experiment, format 'DD.MM.YYYY - HH.MM.SS'",
+      "name": "experiment_date_global_start",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "C"
+    },
+    {
+      "description": "UTC end time of the experiment, format 'DD.MM.YYYY - HH.MM.SS'",
+      "name": "experiment_date_global_end",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "C"
+    },
+    {
+      "description": "Local start time of the experiment, format 'DD.MM.YYYY - HH.MM.SS'",
+      "name": "experiment_date_local_start",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "C"
+    },
+    {
+      "description": "Operation mode of the instrument (APT, FIM or combination)",
+      "name": "experiment_operation_method",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Pulsing method to enforce a controlled ion evaporation sequence",
+      "name": "experiment_imaging_method",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Sample description e.g. pure W wire samples trial 2",
+      "name": "specimen_description",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Number of elements (disjoint element names) expected",
+      "name": "number_of_elements",
+      "dtypeStr": "i",
+      "kindStr": "type_dimension",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "List of periodic table names expected contained in dataset",
+      "name": "specimen_chemistry",
+      "dtypeStr": "C",
+      "shape": ["number_of_elements"],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Qualitative type of specimen and microstructure analyzed (e.g. thin films, nano objects, single crystal, polycrystal)",
+      "name": "specimen_microstructure",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+    {
+      "description": "Qualitative information how many phases in the specimen",
+      "name": "specimen_constitution",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": ""
+    },
+	{
+      "description": "Number of ions successfully evaporated",
+      "name": "measured_number_ions_evaporated",
+      "dtypeStr": "i",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "1"
+    },
+    {
+      "description": "Detector hit positions x and y",
+      "name": "measured_detector_hit_pos",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "mm, mm"
+    },
+    {
+      "description": "Detector hit multiplicity",
+      "name": "measured_detector_hit_mult",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "1"
+    },
+    {
+      "description": "Detector number of dead pulses",
+      "name": "measured_detector_dead_pulses",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "1"
+    },
+    {
+      "description": "Raw ion time of flight",
+      "name": "measured_time_of_flight",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "ns"
+    },
+    {
+      "description": "Standing voltage",
+      "name": "measured_standing_voltage",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "V"
+    },
+    {
+      "description": "Pulse voltage",
+      "name": "measured_pulse_voltage",
+      "dtypeStr": "C",
+      "shape": [],
+      "superNames": ["section_experiment"],
+      "units": "V"
+    }
+  ]
+}
diff --git a/tests/aptfim.tester.json b/tests/aptfim.tester.json
new file mode 100755
index 0000000000000000000000000000000000000000..6a197432498165d7e8050e5e969904064556d668
--- /dev/null
+++ b/tests/aptfim.tester.json
@@ -0,0 +1,29 @@
+{
+    "data_repository_name": "zenodo.org",
+    "data_repository_url": "http://zenodo.org/record/1249280",
+    "data_preview_url": "http://zenodo.org/record/1249280/preview.png",
+
+    "experiment_method": "atom probe tomography or field ion microscopy",
+    "experiment_location": "Düsseldorf, Germany",
+    "experiment_facility_institution": "Max-Planck-Institut für Eisenforschung GmbH",
+    "instrument_info": "LEAP5000",
+    
+    "experiment_date_global_start": "01.01.2000 11:11:11",
+    "experiment_date_global_end": "01.01.2000 22:22:22",
+    "experiment_data_local_start": "01.01.2000 11:11:11",
+    "experiment_operation_method": "apt",
+    "experiment_imaging_method": "laser",
+    
+    "specimen_description": "Pure W wire samples bulk polycrystal",
+    "specimen_chemistry": ["Fe", "Mn"],
+    "specimen_microstructure": "single crystal",
+    "specimen_constitution": "single phase",
+    
+    "measured_nions_evaporated": 129000,
+    "measured_detector_hit_pos": "yes",
+    "measured_detector_hit_mult": "no",
+    "measured_detector_dead_pulses": "no",
+    "measured_time_of_flight": "yes",
+    "measured_standing_voltage": "yes",
+    "measured_pulse_voltage": "no"
+}