diff --git a/xos/synchronizer/tests/test_pull_pods.py b/xos/synchronizer/tests/test_pull_pods.py
index ff5c8f3..588e979 100644
--- a/xos/synchronizer/tests/test_pull_pods.py
+++ b/xos/synchronizer/tests/test_pull_pods.py
@@ -29,7 +29,7 @@
     def setUp(self):
         self.unittest_setup = setup_sync_unit_test(os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
                                                    globals(),
-                                                   [("kubernetes-service", "kubernetes.proto")] )
+                                                   [("kubernetes-service", "kubernetes.xproto")] )
         self.mockxoskafka = MagicMock()
 
         modules = {
diff --git a/xos/synchronizer/tests/test_sync_configmap.py b/xos/synchronizer/tests/test_sync_configmap.py
index efc1111..bdc98f9 100644
--- a/xos/synchronizer/tests/test_sync_configmap.py
+++ b/xos/synchronizer/tests/test_sync_configmap.py
@@ -35,7 +35,9 @@
     def setUp(self):
         self.unittest_setup = setup_sync_unit_test(os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
                                                    globals(),
-                                                   [("kubernetes-service", "kubernetes.proto")] )
+                                                   [("kubernetes-service", "kubernetes.xproto")] )
+
+        self.model_accessor = self.unittest_setup["model_accessor"]
 
         sys.path.append(os.path.join(os.path.abspath(os.path.dirname(os.path.realpath(__file__))), "../steps"))
 
@@ -52,7 +54,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             configmap = KubernetesConfigMap(trust_domain=self.trust_domain, name="test-configmap")
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             map = MagicMock()
             step.v1core.read_namespaced_config_map.return_value = map
 
@@ -65,7 +67,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             configmap = KubernetesConfigMap(trust_domain=self.trust_domain, name="test-configmap")
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             map = MagicMock()
             step.v1core.read_namespaced_config_map.side_effect = step.ApiException(status=404)
 
@@ -78,7 +80,7 @@
             data = {"foo": "bar"}
             configmap = KubernetesConfigMap(trust_domain=self.trust_domain, name="test-configmap", data=json.dumps(data))
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_config_map.side_effect = step.ApiException(status=404)
 
             map = MagicMock()
@@ -99,7 +101,7 @@
             orig_map.data = {"foo": "not_bar"}
             orig_map.metadata.self_link = "1234"
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_config_map.return_value = orig_map
 
             new_map = MagicMock()
@@ -127,7 +129,7 @@
             orig_map.data = {"foo": "not_bar"}
             orig_map.metadata.self_link = "1234"
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_config_map.return_value = orig_map
 
             step.delete_record(configmap)
diff --git a/xos/synchronizer/tests/test_sync_kubernetesresourceinstance.py b/xos/synchronizer/tests/test_sync_kubernetesresourceinstance.py
index 82d957e..25b8ae5 100644
--- a/xos/synchronizer/tests/test_sync_kubernetesresourceinstance.py
+++ b/xos/synchronizer/tests/test_sync_kubernetesresourceinstance.py
@@ -35,9 +35,10 @@
     def setUp(self):
         self.unittest_setup = setup_sync_unit_test(os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
                                                    globals(),
-                                                   [("kubernetes-service", "kubernetes.proto")] )
+                                                   [("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__))), "../steps"))
 
@@ -57,7 +58,7 @@
 
         mock_popen.return_value = proc
 
-        step = self.step_class()
+        step = self.step_class(model_accessor = self.model_accessor)
         step.run_kubectl("create", "foo")
 
         mock_popen.assert_called()
@@ -70,7 +71,7 @@
 
         mock_popen.return_value = proc
 
-        step = self.step_class()
+        step = self.step_class(model_accessor = self.model_accessor)
         with self.assertRaises(Exception) as e:
           step.run_kubectl("create", "foo")
 
@@ -82,7 +83,7 @@
 
             run_kubectl.return_value = None
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.sync_record(xos_ri)
 
             run_kubectl.assert_called_with("apply", "foo")
@@ -95,7 +96,7 @@
 
             run_kubectl.return_value = None
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.sync_record(xos_ri)
 
             run_kubectl.assert_called_with("apply", "foo")
@@ -108,7 +109,7 @@
 
             run_kubectl.return_value = None
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.delete_record(xos_ri)
 
             run_kubectl.assert_called_with("delete", "foo")
@@ -122,7 +123,7 @@
 
             run_kubectl.return_value = None
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.delete_record(xos_ri)
 
             run_kubectl.assert_not_called()
diff --git a/xos/synchronizer/tests/test_sync_kubernetesserviceinstance.py b/xos/synchronizer/tests/test_sync_kubernetesserviceinstance.py
index 2a20868..3badbf4 100644
--- a/xos/synchronizer/tests/test_sync_kubernetesserviceinstance.py
+++ b/xos/synchronizer/tests/test_sync_kubernetesserviceinstance.py
@@ -35,9 +35,10 @@
     def setUp(self):
         self.unittest_setup = setup_sync_unit_test(os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
                                                    globals(),
-                                                   [("kubernetes-service", "kubernetes.proto")] )
+                                                   [("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__))), "../steps"))
 
@@ -57,7 +58,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_si = KubernetesServiceInstance(name="test-instance", slice=self.slice)
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             pod = MagicMock()
             step.v1core.read_namespaced_pod.return_value = pod
 
@@ -70,7 +71,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_si = KubernetesServiceInstance(name="test-instance", slice=self.slice)
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_pod.side_effect = step.ApiException(status=404)
 
             result = step.get_pod(xos_si)
@@ -83,7 +84,7 @@
             xos_si.kubernetes_config_volume_mounts = self.MockObjectList([])
             xos_si.kubernetes_secret_volume_mounts = self.MockObjectList([])
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_pod.side_effect = step.ApiException(status=404)
 
             pod = MagicMock()
@@ -101,7 +102,7 @@
             xos_si.kubernetes_config_volume_mounts = self.MockObjectList([])
             xos_si.kubernetes_secret_volume_mounts = self.MockObjectList([])
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             pod = MagicMock()
             step.v1core.read_namespaced_pod.return_value = pod
 
diff --git a/xos/synchronizer/tests/test_sync_principal.py b/xos/synchronizer/tests/test_sync_principal.py
index 3a55eb4..c9dc0b2 100644
--- a/xos/synchronizer/tests/test_sync_principal.py
+++ b/xos/synchronizer/tests/test_sync_principal.py
@@ -35,7 +35,9 @@
     def setUp(self):
         self.unittest_setup = setup_sync_unit_test(os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
                                                    globals(),
-                                                   [("kubernetes-service", "kubernetes.proto")] )
+                                                   [("kubernetes-service", "kubernetes.xproto")] )
+
+        self.model_accessor = self.unittest_setup["model_accessor"]
 
         sys.path.append(os.path.join(os.path.abspath(os.path.dirname(os.path.realpath(__file__))), "../steps"))
 
@@ -52,7 +54,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_principal = Principal(name="test-principal", trust_domain=self.trust_domain)
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             sa = MagicMock()
             step.v1core.read_namespaced_service_account.return_value = sa
 
@@ -65,7 +67,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_principal = Principal(name="test-principal", trust_domain=self.trust_domain)
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_service_account.side_effect = step.ApiException(status=404)
 
             result = step.get_service_account(xos_principal)
@@ -76,7 +78,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_principal = Principal(name="test-principal", trust_domain=self.trust_domain)
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_service_account.side_effect = step.ApiException(status=404)
 
             sa = MagicMock()
@@ -92,7 +94,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_principal = Principal(name="test-principal", trust_domain=self.trust_domain)
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             k8s_sa = MagicMock()
             step.v1core.read_namespaced_service_account.return_value = k8s_sa
 
diff --git a/xos/synchronizer/tests/test_sync_secret.py b/xos/synchronizer/tests/test_sync_secret.py
index 632adf6..0010726 100644
--- a/xos/synchronizer/tests/test_sync_secret.py
+++ b/xos/synchronizer/tests/test_sync_secret.py
@@ -35,7 +35,9 @@
     def setUp(self):
         self.unittest_setup = setup_sync_unit_test(os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
                                                    globals(),
-                                                   [("kubernetes-service", "kubernetes.proto")] )
+                                                   [("kubernetes-service", "kubernetes.xproto")] )
+
+        self.model_accessor = self.unittest_setup["model_accessor"]
 
         sys.path.append(os.path.join(os.path.abspath(os.path.dirname(os.path.realpath(__file__))), "../steps"))
 
@@ -52,7 +54,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_secret = KubernetesSecret(trust_domain=self.trust_domain, name="test-secret")
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             secret = MagicMock()
             step.v1core.read_namespaced_secret.return_value = secret
 
@@ -65,7 +67,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_secret = KubernetesSecret(trust_domain=self.trust_domain, name="test-secret")
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             secret = MagicMock()
             step.v1core.read_namespaced_secret.side_effect = step.ApiException(status=404)
 
@@ -78,7 +80,7 @@
             data = {"foo": "bar"}
             xos_secret = KubernetesSecret(trust_domain=self.trust_domain, name="test-secret", data=json.dumps(data))
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_secret.side_effect = step.ApiException(status=404)
 
             secret = MagicMock()
@@ -99,7 +101,7 @@
             orig_secret.data = {"foo": "not_bar"}
             orig_secret.metadata.self_link = "1234"
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_secret.return_value = orig_secret
 
             new_secret = MagicMock()
@@ -127,7 +129,7 @@
             orig_secret.data = {"foo": "not_bar"}
             orig_secret.metadata.self_link = "1234"
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_secret.return_value = orig_secret
 
             step.delete_record(xos_secret)
diff --git a/xos/synchronizer/tests/test_sync_service.py b/xos/synchronizer/tests/test_sync_service.py
index 3030193..45b0bb6 100644
--- a/xos/synchronizer/tests/test_sync_service.py
+++ b/xos/synchronizer/tests/test_sync_service.py
@@ -35,7 +35,9 @@
     def setUp(self):
         self.unittest_setup = setup_sync_unit_test(os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
                                                    globals(),
-                                                   [("kubernetes-service", "kubernetes.proto")] )
+                                                   [("kubernetes-service", "kubernetes.xproto")] )
+
+        self.model_accessor = self.unittest_setup["model_accessor"]
 
         sys.path.append(os.path.join(os.path.abspath(os.path.dirname(os.path.realpath(__file__))), "../steps"))
 
@@ -56,7 +58,7 @@
             xos_slice = Slice(service=xos_service, trust_domain=self.trust_domain)
             xos_service.slices = self.MockObjectList([xos_slice])
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             service = MagicMock()
             step.v1core.read_namespaced_service.return_value = service
 
@@ -71,7 +73,7 @@
             xos_slice = Slice(service=xos_service, trust_domain=self.trust_domain)
             xos_service.slices = self.MockObjectList([xos_slice])
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_service.side_effect = step.ApiException(status=404)
 
             result = step.get_service(xos_service, self.trust_domain.name)
@@ -88,7 +90,7 @@
                                           protocol="TCP")
             xos_service.serviceports=self.MockObjectList([xos_serviceport])
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             step.v1core.read_namespaced_service.side_effect = step.ApiException(status=404)
 
             service = MagicMock()
@@ -110,7 +112,7 @@
                                           protocol="TCP")
             xos_service.serviceports=self.MockObjectList([xos_serviceport])
 
-            step = self.step_class()
+            step = self.step_class(model_accessor = self.model_accessor)
             k8s_service = MagicMock()
             step.v1core.read_namespaced_service.return_value = k8s_service
             step.v1core.delete_namespaced_service.return_value = None
diff --git a/xos/synchronizer/tests/test_sync_trustdomain.py b/xos/synchronizer/tests/test_sync_trustdomain.py
index 4b12b9a..9b3f64f 100644
--- a/xos/synchronizer/tests/test_sync_trustdomain.py
+++ b/xos/synchronizer/tests/test_sync_trustdomain.py
@@ -35,7 +35,9 @@
     def setUp(self):
         self.unittest_setup = setup_sync_unit_test(os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
                                                    globals(),
-                                                   [("kubernetes-service", "kubernetes.proto")] )
+                                                   [("kubernetes-service", "kubernetes.xproto")] )
+
+        self.model_accessor = self.unittest_setup["model_accessor"]
 
         sys.path.append(os.path.join(os.path.abspath(os.path.dirname(os.path.realpath(__file__))), "../steps"))
 
@@ -51,7 +53,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_trustdomain = TrustDomain(name="test-trust")
 
-            step = self.step_class()
+            step = self.step_class(model_accessor=self.model_accessor)
             td = MagicMock()
             step.v1core.read_namespace.return_value = td
 
@@ -64,7 +66,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_trustdomain = TrustDomain(name="test-trust")
 
-            step = self.step_class()
+            step = self.step_class(model_accessor=self.model_accessor)
             step.v1core.read_namespace.side_effect = step.ApiException(status=404)
 
             result = step.get_namespace(xos_trustdomain)
@@ -75,7 +77,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_trustdomain = TrustDomain(name="test-trust")
 
-            step = self.step_class()
+            step = self.step_class(model_accessor=self.model_accessor)
             step.v1core.read_namespace.side_effect = step.ApiException(status=404)
 
             td = MagicMock()
@@ -91,7 +93,7 @@
         with patch.object(self.step_class, "init_kubernetes_client", new=fake_init_kubernetes_client):
             xos_trustdomain = TrustDomain(name="test-trust")
 
-            step = self.step_class()
+            step = self.step_class(model_accessor=self.model_accessor)
             td = MagicMock()
             step.v1core.read_namespace.return_value = td
 
diff --git a/xos/synchronizer/tests/unit_test_common.py b/xos/synchronizer/tests/unit_test_common.py
index 7ba2287..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, "kubernetes-service", "kubernetes.xproto"))
+    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}
