diff --git a/km3io/offline.py b/km3io/offline.py
index 8902bc929e3c21ad35838d23b8651933e8f2ec7e..2799276765875c6bb4cc2ced42d52bba36428a7d 100644
--- a/km3io/offline.py
+++ b/km3io/offline.py
@@ -1,5 +1,9 @@
 import uproot
 import warnings
+import km3io.definitions.trigger
+import km3io.definitions.fitparameters
+import km3io.definitions.reconstruction
+
 
 # 110 MB based on the size of the largest basket found so far in km3net
 BASKET_CACHE_SIZE = 110 * 1024**2
@@ -28,6 +32,9 @@ class OfflineKeys:
         self._cut_hits_keys = None
         self._cut_tracks_keys = None
         self._cut_events_keys = None
+        self._trigger = None
+        self._fitparameters = None
+        self._reconstruction = None
 
     def __str__(self):
         return '\n'.join([
@@ -170,17 +177,7 @@ class OfflineKeys:
             list of all "trks.fitinf" keys.
         """
         if self._fit_keys is None:
-            # these are hardcoded because they are not outsourced in offline
-            # files
-            self._fit_keys = [
-                'JGANDALF_BETA0_RAD', 'JGANDALF_BETA1_RAD', 'JGANDALF_CHI2',
-                'JGANDALF_NUMBER_OF_HITS', 'JENERGY_ENERGY', 'JENERGY_CHI2',
-                'JGANDALF_LAMBDA', 'JGANDALF_NUMBER_OF_ITERATIONS',
-                'JSTART_NPE_MIP', 'JSTART_NPE_MIP_TOTAL',
-                'JSTART_LENGTH_METRES', 'JVETO_NPE', 'JVETO_NUMBER_OF_HITS',
-                'JENERGY_MUON_RANGE_METRES', 'JENERGY_NOISE_LIKELIHOOD',
-                'JENERGY_NDF', 'JENERGY_NUMBER_OF_HITS', 'JCOPY_Z_M'
-            ]
+            self._fit_keys = [*self.fitparameters.keys()]
         return self._fit_keys
 
     @property
@@ -228,6 +225,48 @@ class OfflineKeys:
             ]
         return self._cut_events_keys
 
+    @property
+    def trigger(self):
+        """trigger parameters and their index from km3net-Dataformat.
+
+        Returns
+        -------
+        dict
+            dictionary of trigger parameters and their index in an Offline
+            file.
+        """
+        if self._trigger is None:
+            self._trigger = km3io.definitions.trigger.data
+        return self._trigger
+
+    @property
+    def reconstruction(self):
+        """reconstruction parameters and their index from km3net-Dataformat.
+
+        Returns
+        -------
+        dict
+            dictionary of reconstruction parameters and their index in an
+            Offline file.
+        """
+        if self._reconstruction is None:
+            self._reconstruction = km3io.definitions.reconstruction.data
+        return self._reconstruction
+
+    @property
+    def fitparameters(self):
+        """fit parameters parameters and their index from km3net-Dataformat.
+
+        Returns
+        -------
+        dict
+            dictionary of fit parameters and their index in an Offline
+            file.
+        """
+        if self._fitparameters is None:
+            self._fitparameters = km3io.definitions.fitparameters.data
+        return self._fitparameters
+
 
 class Reader:
     """Reader for one offline ROOT file"""