diff --git a/scripts/Diffraction/isis_powder/routines/run_details.py b/scripts/Diffraction/isis_powder/routines/run_details.py
index 8b361499f0019215502db3180bd11483fb0c20ce..5013067591108012471b3cf8d774745267b4398d 100644
--- a/scripts/Diffraction/isis_powder/routines/run_details.py
+++ b/scripts/Diffraction/isis_powder/routines/run_details.py
@@ -137,7 +137,7 @@ class CustomFuncForRunDetails(object):
         if not previous_callable:
             return None
         elif not isinstance(previous_callable, CustomFuncForRunDetails):
-            raise ValueError("Previous callable is not a RunDetailsFuncWrapper type")
+            raise ValueError("Previous callable is not a CustomFuncForRunDetails type")
 
         self._previous_callable = previous_callable
 
diff --git a/scripts/test/ISISPowderInstrumentSettingsTest.py b/scripts/test/ISISPowderInstrumentSettingsTest.py
index 0376e0e2f10a1e1943c1607dd6cb2d6811b138a0..3deaa0be8fee60e7a869c1ee02fcc02cbe07d027 100644
--- a/scripts/test/ISISPowderInstrumentSettingsTest.py
+++ b/scripts/test/ISISPowderInstrumentSettingsTest.py
@@ -6,24 +6,23 @@ import warnings
 
 from six import assertRaisesRegex, assertRegex
 
-from isis_powder.routines import InstrumentSettings, ParamMapEntry
+from isis_powder.routines import instrument_settings, param_map_entry
 
 
 class ISISPowderInstrumentSettingsTest(unittest.TestCase):
-
     def test_user_missing_attribute_is_detected(self):
-        param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name")
+        param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name")
 
-        inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry])
+        inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry])
 
         with assertRaisesRegex(self, AttributeError, "is required but was not set or passed"):
             foo = inst_settings_obj.script_facing_name
             del foo
 
     def test_user_missing_attribute_prints_enum_values(self):
-        param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name",
-                                                  enum_class=SampleEnum)
-        inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry])
+        param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name",
+                                                    enum_class=SampleEnum)
+        inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry])
 
         # Check it still prints the acceptable values when it fails
         with assertRaisesRegex(self, AttributeError, "a foo, A BAR"):
@@ -31,9 +30,9 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase):
             del foo
 
     def test_developer_missing_attribute_is_detected(self):
-        param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name")
+        param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name")
 
-        inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry])
+        inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry])
 
         with assertRaisesRegex(self, AttributeError, "Please contact the development team"):
             foo = inst_settings_obj.not_known
@@ -41,16 +40,16 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase):
 
     def test_set_attribute_is_found(self):
         expected_value = 100
-        param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name")
+        param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name")
         keyword_args = {"user_facing_name": expected_value}
 
-        inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], kwargs=keyword_args)
+        inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry], kwargs=keyword_args)
         self.assertEqual(inst_settings_obj.script_facing_name, expected_value)
 
     def test_updating_attributes_produces_warning_on_init(self):
         original_value = 123
         new_value = 456
-        param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name")
+        param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name")
 
         # First check this works on init
         adv_config = {"user_facing_name": original_value}
@@ -58,8 +57,8 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase):
 
         with warnings.catch_warnings(record=True) as warning_capture:
             warnings.simplefilter("always")
-            inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], kwargs=keyword_args,
-                                                                      adv_conf_dict=adv_config)
+            inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry], kwargs=keyword_args,
+                                                                       adv_conf_dict=adv_config)
 
             assertRegex(self, str(warning_capture[-1].message), "which was previously set to")
             assertRegex(self, str(warning_capture[-1].message), str(original_value))
@@ -72,14 +71,14 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase):
         new_value = 456
         second_value = 567
 
-        param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name")
+        param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name")
 
         # First check this works on init
         adv_config = {"user_facing_name": original_value}
         config_dict = {"user_facing_name": new_value}
         keyword_args = {"user_facing_name": second_value}
 
-        inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=adv_config)
+        inst_settings_obj = instrument_settings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=adv_config)
 
         self.assertEqual(inst_settings_obj.script_facing_name, original_value)
 
@@ -111,8 +110,8 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase):
 
     def test_inst_settings_enters_into_dicts(self):
         param_entries = [
-            ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name"),
-            ParamMapEntry.ParamMapEntry(ext_name="user_facing_name2", int_name="script_facing_name2")
+            param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name"),
+            param_map_entry.ParamMapEntry(ext_name="user_facing_name2", int_name="script_facing_name2")
         ]
 
         expected_value = 101
@@ -120,60 +119,61 @@ class ISISPowderInstrumentSettingsTest(unittest.TestCase):
         example_dict = {"user_facing_name": expected_value}
         nested_dict = {"some_random_name": example_dict}
 
-        inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=param_entries, adv_conf_dict=nested_dict)
+        inst_settings_obj = instrument_settings.InstrumentSettings(param_map=param_entries, adv_conf_dict=nested_dict)
         self.assertEqual(inst_settings_obj.script_facing_name, expected_value)
 
         # Next check that any attributes that a mixed dictionary contains are added
         mixed_dict = {"some_random_name2": example_dict,
                       "user_facing_name2": expected_value * 2}
 
-        second_inst_settings_obj = InstrumentSettings.InstrumentSettings(param_map=param_entries,
-                                                                         adv_conf_dict=mixed_dict)
+        second_inst_settings_obj = instrument_settings.InstrumentSettings(param_map=param_entries,
+                                                                          adv_conf_dict=mixed_dict)
 
         self.assertEqual(second_inst_settings_obj.script_facing_name, expected_value)
         self.assertEqual(second_inst_settings_obj.script_facing_name2, expected_value * 2)
 
     def test_check_enum_check_and_set_works(self):
-        param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name",
-                                                  enum_class=SampleEnum)
+        param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name",
+                                                    enum_class=SampleEnum)
 
         # First test we cannot set it to a different value
         incorrect_value_dict = {"user_facing_name": "wrong"}
         with assertRaisesRegex(self, ValueError, "The user specified value: 'wrong' is unknown"):
-            inst_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry],
-                                                             adv_conf_dict=incorrect_value_dict)
+            instrument_settings.InstrumentSettings(param_map=[param_entry],
+                                                   adv_conf_dict=incorrect_value_dict)
 
         # Check that we can set a known good enum
         good_value_dict = {"user_facing_name": SampleEnum.a_bar}
-        inst_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=good_value_dict)
+        inst_obj = instrument_settings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=good_value_dict)
         self.assertEqual(inst_obj.script_facing_name, SampleEnum.a_bar)
 
         # Next check it passes on mixed case and converts it back to the correct case
         different_case_dict = {"user_facing_name": SampleEnum.a_bar.lower()}
-        inst_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=different_case_dict)
+        inst_obj = instrument_settings.InstrumentSettings(param_map=[param_entry], adv_conf_dict=different_case_dict)
         self.assertEqual(inst_obj.script_facing_name, SampleEnum.a_bar, "Case is not being converted correctly")
 
     def test_param_map_rejects_enum_missing_friendly_name(self):
         # Check that is the friendly name is not set it is correctly detected
-        with assertRaisesRegex(self, RuntimeError, "'enum_friendly_name' was not set. Please contact development team."):
-            ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name",
-                                        enum_class=BadSampleEnum)
+        with assertRaisesRegex(self, RuntimeError,
+                               "'enum_friendly_name' was not set. Please contact development team."):
+            param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name",
+                                          enum_class=BadSampleEnum)
 
     def test_optional_attribute_works(self):
-        optional_param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name",
-                                                           optional=True)
+        optional_param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name",
+                                                             optional=True)
 
-        param_entry = ParamMapEntry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name",
-                                                  optional=False)
+        param_entry = param_map_entry.ParamMapEntry(ext_name="user_facing_name", int_name="script_facing_name",
+                                                    optional=False)
 
         # Check that not passing an optional and trying to access it works correctly
-        opt_inst_obj = InstrumentSettings.InstrumentSettings(param_map=[optional_param_entry])
+        opt_inst_obj = instrument_settings.InstrumentSettings(param_map=[optional_param_entry])
         self.assertIsNone(opt_inst_obj.script_facing_name)
 
         # Check that setting optional to false still throws
-        inst_obj = InstrumentSettings.InstrumentSettings(param_map=[param_entry])
+        inst_obj = instrument_settings.InstrumentSettings(param_map=[param_entry])
         with self.assertRaises(AttributeError):
-            foo = inst_obj.script_facing_name
+            getattr(inst_obj, "script_facing_name")
 
         # Check if we do set an optional from fresh it does not emit a warning and is set
         optional_value = 100
@@ -204,5 +204,6 @@ class SampleEnum(object):
 class BadSampleEnum(object):
     a_foo = "a foo"
 
+
 if __name__ == "__main__":
     unittest.main()
diff --git a/scripts/test/ISISPowderRunDetailsTest.py b/scripts/test/ISISPowderRunDetailsTest.py
index ec183db3dd0b48914aa1f6c593dd38604729dcff..604028dc328b4dccb387a0947d34aeb3d42c1352 100644
--- a/scripts/test/ISISPowderRunDetailsTest.py
+++ b/scripts/test/ISISPowderRunDetailsTest.py
@@ -8,11 +8,10 @@ import string
 import unittest
 import warnings
 
-from isis_powder.routines import RunDetails
+from isis_powder.routines import run_details
 
 
 class ISISPowderInstrumentRunDetailsTest(unittest.TestCase):
-
     def setup_mock_inst_settings(self, yaml_file_path):
         calibration_dir = tempfile.mkdtemp()
         self._folders_to_remove = [calibration_dir]
@@ -39,8 +38,8 @@ class ISISPowderInstrumentRunDetailsTest(unittest.TestCase):
         run_number_string = "17-18"
         mock_inst = self.setup_mock_inst_settings(yaml_file_path="ISISPowderRunDetailsTest.yaml")
 
-        output_obj = RunDetails.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst,
-                                                          is_vanadium_run=False)
+        output_obj = run_details.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst,
+                                                           is_vanadium_run=False)
 
         self.assertEqual(output_obj.empty_runs, expected_empty_runs)
         self.assertEqual(output_obj.grouping_file_path,
@@ -58,8 +57,8 @@ class ISISPowderInstrumentRunDetailsTest(unittest.TestCase):
         run_number_string = "17-18"
         expected_vanadium_runs = "11-12"
         mock_inst = self.setup_mock_inst_settings(yaml_file_path="ISISPowderRunDetailsTest.yaml")
-        output_obj = RunDetails.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst,
-                                                          is_vanadium_run=True)
+        output_obj = run_details.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst,
+                                                           is_vanadium_run=True)
 
         self.assertEqual(expected_vanadium_runs, output_obj.run_number)
         self.assertEqual(output_obj.vanadium_run_numbers, output_obj.run_number)
@@ -75,21 +74,22 @@ class ISISPowderInstrumentRunDetailsTest(unittest.TestCase):
         mock_inst = self.setup_mock_inst_settings(yaml_file_path="ISISPowderRunDetailsTestCallable.yaml")
 
         # Get the YAML file as a dict first
-        wrapped_funcs = RunDetails.WrappedFunctionsRunDetails
+        wrapped_funcs = run_details.WrappedFunctionsRunDetails
 
-        yaml_callable = RunDetails.RunDetailsFuncWrapper(function=wrapped_funcs.get_cal_mapping_dict,
-                                                         run_number_string=run_number_string, inst_settings=mock_inst)
+        yaml_callable = run_details.CustomFuncForRunDetails(function=wrapped_funcs.get_cal_mapping_dict,
+                                                            run_number_string=run_number_string,
+                                                            inst_settings=mock_inst)
 
         empty_callable = yaml_callable.add_to_func_chain(user_function=wrapped_funcs.cal_dictionary_key_helper,
                                                          key="custom_empty_run_numbers")
         vanadium_callable = yaml_callable.add_to_func_chain(user_function=wrapped_funcs.cal_dictionary_key_helper,
                                                             key="custom_vanadium_run_numbers")
-        grouping_callable = RunDetails.RunDetailsFuncWrapper(function=lambda: expected_grouping_file_name)
+        grouping_callable = run_details.CustomFuncForRunDetails(function=lambda: expected_grouping_file_name)
 
-        output_obj = RunDetails.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst,
-                                                          is_vanadium_run=True, empty_run_call=empty_callable,
-                                                          vanadium_run_call=vanadium_callable,
-                                                          grouping_file_name_call=grouping_callable)
+        output_obj = run_details.create_run_details_object(run_number_string=run_number_string, inst_settings=mock_inst,
+                                                           is_vanadium_run=True, empty_run_call=empty_callable,
+                                                           vanadium_run_call=vanadium_callable,
+                                                           grouping_file_name_call=grouping_callable)
 
         self.assertEqual(output_obj.label, expected_label)
         self.assertEqual(output_obj.empty_runs, expected_empty_runs)
@@ -103,8 +103,8 @@ class ISISPowderInstrumentRunDetailsTest(unittest.TestCase):
         expected_offset_file_name = "offset_file_name"
         splined_name_list = ["bar", "bang", "baz"]
         mock_inst = self.setup_mock_inst_settings(yaml_file_path="ISISPowderRunDetailsTest.yaml")
-        output_obj = RunDetails.create_run_details_object(run_number_string=10, inst_settings=mock_inst,
-                                                          is_vanadium_run=False, splined_name_list=splined_name_list)
+        output_obj = run_details.create_run_details_object(run_number_string=10, inst_settings=mock_inst,
+                                                           is_vanadium_run=False, splined_name_list=splined_name_list)
 
         expected_splined_out_str = ''.join('_' + val for val in splined_name_list)
         expected_output_name = "VanSplined_" + expected_vanadium_runs + expected_splined_out_str
@@ -123,5 +123,6 @@ class MockInstSettings(object):
     def gen_random_string():
         return ''.join(random.choice(string.ascii_lowercase) for _ in range(10))
 
+
 if __name__ == "__main__":
     unittest.main()