diff --git a/scripts/Diffraction/isis_powder/gem.py b/scripts/Diffraction/isis_powder/gem.py
index 98af04e1010698009bb782baff964c1100f067ff..fdf92199df3eb8a88aa30db22cef912ade928646 100644
--- a/scripts/Diffraction/isis_powder/gem.py
+++ b/scripts/Diffraction/isis_powder/gem.py
@@ -7,11 +7,9 @@ from isis_powder.routines import common, instrument_settings, yaml_parser
 
 class Gem(AbstractInst):
     def __init__(self, **kwargs):
-        basic_config_dict = yaml_parser.open_yaml_file_as_dictionary(kwargs.get("config_file", None))
-
         self._inst_settings = instrument_settings.InstrumentSettings(
             param_map=gem_param_mapping.attr_mapping, adv_conf_dict=gem_advanced_config.get_all_adv_variables(),
-            kwargs=kwargs, basic_conf_dict=basic_config_dict)
+            kwargs=kwargs)
 
         super(Gem, self).__init__(user_name=self._inst_settings.user_name,
                                   calibration_dir=self._inst_settings.calibration_dir,
diff --git a/scripts/Diffraction/isis_powder/pearl.py b/scripts/Diffraction/isis_powder/pearl.py
index 1610c2a3bbb2116eb272867f58c7c38ab74c485d..418a0c6f562439b7b5de93f3ce190514916ce3bb 100644
--- a/scripts/Diffraction/isis_powder/pearl.py
+++ b/scripts/Diffraction/isis_powder/pearl.py
@@ -10,11 +10,9 @@ from isis_powder.pearl_routines import pearl_algs, pearl_output, pearl_advanced_
 class Pearl(AbstractInst):
 
     def __init__(self, **kwargs):
-        basic_config_dict = yaml_parser.open_yaml_file_as_dictionary(kwargs.get("config_file", None))
-
         self._inst_settings = instrument_settings.InstrumentSettings(
            param_map=pearl_param_mapping.attr_mapping, adv_conf_dict=pearl_advanced_config.get_all_adv_variables(),
-           basic_conf_dict=basic_config_dict, kwargs=kwargs)
+           kwargs=kwargs)
 
         super(Pearl, self).__init__(user_name=self._inst_settings.user_name,
                                     calibration_dir=self._inst_settings.calibration_dir,
diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py
index 510898ed047896ba58d0b9fbf52872d4ec79b040..3ca804f59af0a072f4747d2c32b42f25a039b9eb 100644
--- a/scripts/Diffraction/isis_powder/polaris.py
+++ b/scripts/Diffraction/isis_powder/polaris.py
@@ -9,10 +9,9 @@ from isis_powder.polaris_routines import polaris_advanced_config, polaris_algs,
 
 class Polaris(AbstractInst):
     def __init__(self, **kwargs):
-        basic_config_dict = yaml_parser.open_yaml_file_as_dictionary(kwargs.get("config_file", None))
         self._inst_settings = instrument_settings.InstrumentSettings(
             param_map=polaris_param_mapping.attr_mapping, adv_conf_dict=polaris_advanced_config.variables,
-            basic_conf_dict=basic_config_dict, kwargs=kwargs)
+            kwargs=kwargs)
 
         super(Polaris, self).__init__(user_name=self._inst_settings.user_name,
                                       calibration_dir=self._inst_settings.calibration_dir,
diff --git a/scripts/Diffraction/isis_powder/routines/instrument_settings.py b/scripts/Diffraction/isis_powder/routines/instrument_settings.py
index 565227dbd730f5a92167f3c6dd6b4bffd9485177..2666b89e2cf0e35f2b9508df8682c61fc55805ec 100644
--- a/scripts/Diffraction/isis_powder/routines/instrument_settings.py
+++ b/scripts/Diffraction/isis_powder/routines/instrument_settings.py
@@ -1,31 +1,38 @@
 from __future__ import (absolute_import, division, print_function)
 
 from six import iteritems
+from isis_powder.routines import yaml_parser
 import warnings
 
 
 # Have to patch warnings at runtime to not print the source code. This is even advertised as a 'feature' of
 # the warnings library in the documentation: https://docs.python.org/3/library/warnings.html#warnings.showwarning
-def warning_no_source(msg, *_):
+def _warning_no_source(msg, *_):
     return str(msg) + '\n'
 
-warnings.formatwarning = warning_no_source
+warnings.formatwarning = _warning_no_source
 warnings.simplefilter('always', UserWarning)
 
 
 class InstrumentSettings(object):
     # Holds instance variables updated at runtime
-    def __init__(self, param_map, adv_conf_dict=None, basic_conf_dict=None, kwargs=None):
+    def __init__(self, param_map, adv_conf_dict=None, kwargs=None):
         self._param_map = param_map
         self._adv_config_dict = adv_conf_dict
-        self._basic_conf_dict = basic_conf_dict
         self._kwargs = kwargs
 
+        config_file_path = kwargs.get("config_file", None)
+        if not config_file_path:
+            warnings.warn("No config file was specified. If one was meant to be used the path to a YAML config file"
+                          " is set with the 'config_file' parameter.")
+        # Always do this so we have a known state of the internal variable
+        self._basic_conf_dict = yaml_parser.open_yaml_file_as_dictionary(config_file_path)
+
         # We parse in the order advanced config, basic config (if specified), kwargs.
         # This means that users can use the advanced config as a safe set of defaults, with their own preferences as
         # the next layer which can override defaults and finally script arguments as their final override.
         self._parse_attributes(dict_to_parse=adv_conf_dict)
-        self._parse_attributes(dict_to_parse=basic_conf_dict)
+        self._parse_attributes(dict_to_parse=self._basic_conf_dict)
         self._parse_attributes(dict_to_parse=kwargs)
 
     # __getattr__ is only called if the attribute was not set so we already know