diff --git a/xos/synchronizer/tests/test_model_policy_simpleexampleserviceinstance.py b/xos/synchronizer/tests/test_model_policy_simpleexampleserviceinstance.py
index 1960d84..12d7ba5 100644
--- a/xos/synchronizer/tests/test_model_policy_simpleexampleserviceinstance.py
+++ b/xos/synchronizer/tests/test_model_policy_simpleexampleserviceinstance.py
@@ -33,6 +33,7 @@
                                                     ("kubernetes-service", "kubernetes.xproto")] )
 
         self.MockObjectList = self.unittest_setup["MockObjectList"]
+        self.model_accessor = self.unittest_setup["model_accessor"]
 
         sys.path.append(os.path.join(os.path.abspath(os.path.dirname(os.path.realpath(__file__))), "../model_policies"))
 
@@ -66,7 +67,7 @@
                                               owner=self.service, tenant_message="world", tenant_secret="l3tm31n")
             si.embedded_images = self.MockObjectList([])
 
-            step = self.policy_class()
+            step = self.policy_class(model_accessor=self.model_accessor)
 
             desired_data = json.dumps({"index.html": step.render_index(si)})
 
@@ -136,7 +137,7 @@
             si.compute_instance = ksi
             ksi.kubernetes_config_volume_mounts = self.MockObjectList([cfm_mnt])
 
-            step = self.policy_class()
+            step = self.policy_class(model_accessor=self.model_accessor)
 
             desired_data = json.dumps({"index.html": step.render_index(si)})
 
@@ -166,7 +167,7 @@
             k8s_service_objects.return_value = [self.k8s_service]
             service_objects.return_value = [self.k8s_service, self.service]
 
-            step = self.policy_class()
+            step = self.policy_class(model_accessor=self.model_accessor)
 
             si = SimpleExampleServiceInstance(name="test-simple-instance",
                                               id=1112,
@@ -205,7 +206,7 @@
                                             name="simpleexampleserviceinstance-1112")
             si.compute_instance = ksi
 
-            step = self.policy_class()
+            step = self.policy_class(model_accessor=self.model_accessor)
 
             step.handle_delete(si)
 
diff --git a/xos/synchronizer/tests/unit_test_common.py b/xos/synchronizer/tests/unit_test_common.py
index 68f6743..c2cdde8 100644
--- a/xos/synchronizer/tests/unit_test_common.py
+++ b/xos/synchronizer/tests/unit_test_common.py
@@ -18,15 +18,14 @@
 
 def setup_sync_unit_test(test_path, globals_dict, models, config_fn="test_config.yaml"):
     """ Perform the common steps associated with setting up a synchronizer unit test.
-           1) Add synchronizers/new_base to sys.path
-           2) Import xosconfig.Config and set it up to test_config.yaml in the current dir
-           3) Build the mock modelaccessor and import it
-           4) Import all model accessor classes into global space
+           1) Import xosconfig.Config and set it up to test_config.yaml in the current dir
+           2) Build the mock modelaccessor and import it
+           3) Import all model accessor classes into global space
 
         Arguments:
             test_path - path to the test case that is being run
             globals_dict - a dictionary to add global models to
-            models - a list of pairs (service_name, xproto_name,
+            models - a list of pairs (service_name, xproto_name)
             config_fn - filename of config file)
 
         Returns:
@@ -37,39 +36,23 @@
                 xos_dir: xos directory
                 services_dir: services directory
     """
-    def get_models_fn(services_dir, service_name, xproto_name):
-        name = os.path.join(service_name, "xos", xproto_name)
-        if os.path.exists(os.path.join(services_dir, name)):
-            return name
-        else:
-            name = os.path.join(service_name, "xos", "synchronizer", "models", xproto_name)
-            if os.path.exists(os.path.join(services_dir, name)):
-                return name
-        raise Exception("Unable to find service=%s xproto=%s" % (service_name, xproto_name))
-
     sys_path_save = sys.path
 
-    xos_dir = os.path.join(test_path, "../../..")
-    if not os.path.exists(os.path.join(test_path, "new_base")):
-        xos_dir = os.path.join(test_path, "../../../../../../orchestration/xos/xos")
-        services_dir = os.path.join(xos_dir, "../../xos_services")
-    sys.path.append(xos_dir)
-    sys.path.append(os.path.join(xos_dir, 'synchronizers', 'new_base'))
-
     # Setting up the config module
     from xosconfig import Config
     config = os.path.join(test_path, config_fn)
     Config.clear()
     Config.init(config, "synchronizer-config-schema.yaml")
 
-    xprotos = []
-    for (service_name, xproto_name) in models:
-        xprotos.append(get_models_fn(services_dir, service_name, xproto_name))
+    from xossynchronizer.mock_modelaccessor_build import mock_modelaccessor_config
+    mock_modelaccessor_config(test_path, models)
 
-    from synchronizers.new_base.mock_modelaccessor_build import build_mock_modelaccessor
-    build_mock_modelaccessor(xos_dir, services_dir, xprotos)
-    import synchronizers.new_base.modelaccessor
-    from synchronizers.new_base.modelaccessor import model_accessor
+    import xossynchronizer.modelaccessor
+    reload(xossynchronizer.modelaccessor)  # in case nose2 loaded it in a previous testp
+
+    from xossynchronizer.modelaccessor import model_accessor
+
+    # modelaccessor.py will have ensure mock_modelaccessor is in sys.path
     from mock_modelaccessor import MockObjectList
 
     # import all class names to globals
@@ -79,6 +62,4 @@
     return {"sys_path_save": sys_path_save,
             "model_accessor": model_accessor,
             "Config": Config,
-            "xos_dir": xos_dir,
-            "services_dir": services_dir,
             "MockObjectList": MockObjectList}
