diff --git a/.gitattributes b/.gitattributes
index f2216c78fe2bac0f88b2df2da221ed6b44729e55..ca7252012035e8f344762725a13b17e170491200 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -11,6 +11,7 @@ CAL/CalibrationCommon/lib/__init__.py -text
 CAL/CalibrationCommon/lib/coordinates.py -text
 CAL/CalibrationCommon/lib/datacontainers/__init__.py -text
 CAL/CalibrationCommon/lib/datacontainers/holography_dataset.py -text
+CAL/CalibrationCommon/lib/datacontainers/holography_observation_specification.py -text
 CAL/CalibrationCommon/lib/datacontainers/holography_specification.py -text
 CAL/CalibrationCommon/lib/datacontainers/measurementset.py -text
 CAL/CalibrationCommon/lib/mshologextract.py -text
diff --git a/CAL/CalibrationCommon/lib/datacontainers/__init__.py b/CAL/CalibrationCommon/lib/datacontainers/__init__.py
index 5e8628378108a074ee3464ff1d24c84491ec6dd7..148d45aaaf33838dafa25659659bcdaa2438ae51 100644
--- a/CAL/CalibrationCommon/lib/datacontainers/__init__.py
+++ b/CAL/CalibrationCommon/lib/datacontainers/__init__.py
@@ -1,7 +1,8 @@
 
 from .holography_dataset import HolographyDataset
-from .holography_specification import HolographySpecification, HolographyObservation
+from .holography_specification import HolographySpecification
+from .holography_observation_specification import HolographyObservationSpecification
 from .measurementset import MeasurementSet
 
 
-__all__ = [HolographyDataset, HolographyObservation, HolographySpecification, MeasurementSet]
\ No newline at end of file
+__all__ = [HolographyDataset, HolographyObservationSpecification, HolographySpecification, MeasurementSet]
\ No newline at end of file
diff --git a/CAL/CalibrationCommon/lib/datacontainers/holography_observation_specification.py b/CAL/CalibrationCommon/lib/datacontainers/holography_observation_specification.py
new file mode 100644
index 0000000000000000000000000000000000000000..2c58e02522a43eba071a7776e10fd978d7419b46
--- /dev/null
+++ b/CAL/CalibrationCommon/lib/datacontainers/holography_observation_specification.py
@@ -0,0 +1,63 @@
+import re
+import os
+
+from .measurementset import MeasurementSet
+
+class HolographyObservationSpecification():
+    def __init__(self, path, sas_id, ms_for_a_given_beamlet, observation_start_datetime,
+                 observation_end_datetime):
+        self.path = path
+        self.sas_id = sas_id
+        self.ms_for_a_given_beamlet = ms_for_a_given_beamlet
+        self.start_datetime = observation_start_datetime
+        self.end_datetime = observation_end_datetime
+
+    @staticmethod
+    def __compute_time_range_from_ms_list(ms_list):
+        observation_start, observation_end = ms_list[0].get_start_end_observation()
+        for ms in ms_list:
+            ms_start_time, ms_end_time = ms.get_start_end_observation()
+            if observation_start > ms_start_time:
+                observation_start = ms_start_time
+            if observation_end < ms_end_time:
+                observation_end = ms_end_time
+        return observation_start, observation_end
+
+    @staticmethod
+    def list_observations_in_path(path):
+        ms_dir_name_pattern = 'L(?P<sas_id>\d{6})'
+        ms_dirs_path_pattern = '^' + os.path.join(path, ms_dir_name_pattern, 'uv$')
+        observations_list = []
+        for root, dirnames, filenames in os.walk(path):
+            match = re.match(ms_dirs_path_pattern, root)
+            if match:
+                sas_id = int(match.group('sas_id'))
+
+                ms_indexed_per_beamlet_number = HolographyObservationSpecification.\
+                    create_ms_dict_from_ms_name_list_and_path(dirnames, root)
+
+
+                start_datetime, end_datetime = HolographyObservationSpecification.\
+                    __compute_time_range_from_ms_list(
+                    ms_indexed_per_beamlet_number.values())
+
+                observations_list.append(
+                    HolographyObservationSpecification(path, sas_id, ms_indexed_per_beamlet_number,
+                                                       start_datetime, end_datetime))
+        return observations_list
+
+    @staticmethod
+    def create_ms_dict_from_ms_name_list_and_path(list_of_ms_names, path):
+        """
+        Creates a dict measurement sets indexed by beamlet id
+        :param list_of_ms_names: a list of the ms to process
+        :param path: a path were the ms are stored
+        :return: a dict containing the map of the ms indexed by their beamlet number
+                            ex. { 0 : ms_beam0 ....}
+        """
+        filtered_list_of_ms_names = MeasurementSet.filter_valid_ms_names(list_of_ms_names)
+        ms_list = [MeasurementSet(ms_name, path) for ms_name in filtered_list_of_ms_names]
+
+        beamlet_ms_map = {ms.beamlet:ms for ms in ms_list}
+
+        return beamlet_ms_map
\ No newline at end of file
diff --git a/CAL/CalibrationCommon/lib/datacontainers/holography_specification.py b/CAL/CalibrationCommon/lib/datacontainers/holography_specification.py
index e2f173946f30b485edb3dd3cd2567c40ba15ea31..ce6170ba4760be12ad8c6c912aa6a2b0d2d899ae 100644
--- a/CAL/CalibrationCommon/lib/datacontainers/holography_specification.py
+++ b/CAL/CalibrationCommon/lib/datacontainers/holography_specification.py
@@ -3,8 +3,6 @@ from collections import defaultdict
 import re
 import os
 
-from .measurementset import MeasurementSet
-
 
 class HolographySpecification(object):
     hs_name_pattern = r'Holog-(?P<date>\d{8})-(?P<comment>.*)-(?P<id>\d{3}).txt'
@@ -21,7 +19,6 @@ class HolographySpecification(object):
         self.rcu_mode = None
         self.beam_set_interval = None
 
-
     def __repr__(self):
         return 'HolographySpecification(%s, %s, %s, %s, %s)' % (
                                                                 self.id,
@@ -158,61 +155,4 @@ class HolographySpecification(object):
         return hs_id, date, comment
 
 
-class HolographyObservation():
-    def __init__(self, path, sas_id, ms_for_a_given_beamlet, observation_start_datetime,
-                 observation_end_datetime):
-        self.path = path
-        self.sas_id = sas_id
-        self.ms_for_a_given_beamlet = ms_for_a_given_beamlet
-        self.start_datetime = observation_start_datetime
-        self.end_datetime = observation_end_datetime
-
-    @staticmethod
-    def __compute_time_range_from_ms_list(ms_list):
-        observation_start, observation_end = ms_list[0].get_start_end_observation()
-        for ms in ms_list:
-            ms_start_time, ms_end_time = ms.get_start_end_observation()
-            if observation_start > ms_start_time:
-                observation_start = ms_start_time
-            if observation_end < ms_end_time:
-                observation_end = ms_end_time
-        return observation_start, observation_end
-
-    @staticmethod
-    def list_observations_in_path(path):
-        ms_dir_name_pattern = 'L(?P<sas_id>\d{6})'
-        ms_dirs_path_pattern = '^' + os.path.join(path, ms_dir_name_pattern, 'uv$')
-        observations_list = []
-        for root, dirnames, filenames in os.walk(path):
-            match = re.match(ms_dirs_path_pattern, root)
-            if match:
-                sas_id = int(match.group('sas_id'))
 
-                ms_indexed_per_beamlet_number = HolographyObservation.\
-                    create_ms_dict_from_ms_name_list_and_path(dirnames, root)
-
-
-                start_datetime, end_datetime = HolographyObservation.\
-                    __compute_time_range_from_ms_list(
-                    ms_indexed_per_beamlet_number.values())
-
-                observations_list.append(
-                    HolographyObservation(path, sas_id, ms_indexed_per_beamlet_number,
-                                      start_datetime, end_datetime))
-        return observations_list
-
-    @staticmethod
-    def create_ms_dict_from_ms_name_list_and_path(list_of_ms_names, path):
-        """
-        Creates a dict measurement sets indexed by beamlet id
-        :param list_of_ms_names: a list of the ms to process
-        :param path: a path were the ms are stored
-        :return: a dict containing the map of the ms indexed by their beamlet number
-                            ex. { 0 : ms_beam0 ....}
-        """
-        filtered_list_of_ms_names = MeasurementSet.filter_valid_ms_names(list_of_ms_names)
-        ms_list = [MeasurementSet(ms_name, path) for ms_name in filtered_list_of_ms_names]
-
-        beamlet_ms_map = {ms.beamlet:ms for ms in ms_list}
-
-        return beamlet_ms_map