diff --git a/Dockerfile.synchronizer b/Dockerfile.synchronizer
index d2b1b2a..0137f8b 100644
--- a/Dockerfile.synchronizer
+++ b/Dockerfile.synchronizer
@@ -14,7 +14,7 @@
 
 # xosproject/simpleexampleservice-synchronizer
 
-FROM xosproject/xos-synchronizer-base:2.1.32
+FROM xosproject/xos-synchronizer-base:2.1.38
 
 COPY xos/synchronizer /opt/xos/synchronizers/simpleexampleservice
 COPY VERSION /opt/xos/synchronizers/simpleexampleservice/
diff --git a/VERSION b/VERSION
index e25d8d9..0664a8f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.1.5
+1.1.6
diff --git a/xos/synchronizer/event_steps/simpleexampleevent.py b/xos/synchronizer/event_steps/simpleexampleevent.py
index a0b1ec4..07374b9 100644
--- a/xos/synchronizer/event_steps/simpleexampleevent.py
+++ b/xos/synchronizer/event_steps/simpleexampleevent.py
@@ -17,8 +17,7 @@
 import json
 import os
 import sys
-from synchronizers.new_base.eventstep import EventStep
-from synchronizers.new_base.modelaccessor import *
+from xossynchronizer.event_steps.eventstep import EventStep
 from xosconfig import Config
 from multistructlog import create_logger
 
@@ -36,7 +35,7 @@
         service_instance_name = value["service_instance"]
         tenant_message = value["tenant_message"]
 
-        objs = SimpleExampleServiceInstance.objects.filter(name=service_instance_name)
+        objs = self.model_accessor.SimpleExampleServiceInstance.objects.filter(name=service_instance_name)
         if not objs:
             raise Exception("failed to find %s" % service_instance_name)
 
diff --git a/xos/synchronizer/model_policies/model_policy_simpleexampleserviceinstance.py b/xos/synchronizer/model_policies/model_policy_simpleexampleserviceinstance.py
index 63db3ef..169024f 100644
--- a/xos/synchronizer/model_policies/model_policy_simpleexampleserviceinstance.py
+++ b/xos/synchronizer/model_policies/model_policy_simpleexampleserviceinstance.py
@@ -16,8 +16,8 @@
 import base64
 import jinja2
 import json
-from synchronizers.new_base.modelaccessor import *
-from synchronizers.new_base.policy import Policy
+import os
+from xossynchronizer.model_policies.policy import Policy
 
 from xosconfig import Config
 from multistructlog import create_logger
@@ -57,8 +57,10 @@
     def handle_update(self, service_instance):
         if not service_instance.compute_instance:
             # TODO: Break dependency
-            compute_service = KubernetesService.objects.first()
-            compute_service_instance_class = Service.objects.get(id=compute_service.id).get_service_instance_class()
+            compute_service = self.model_accessor.KubernetesService.objects.first()
+            compute_service_instance_class = self.model_accessor.Service.objects.get(
+                id=compute_service.id
+            ).get_service_instance_class()
 
             exampleservice = service_instance.owner.leaf_model
 
@@ -74,11 +76,11 @@
 
             # Create a configmap and attach it to the compute instance
             data = {"index.html": self.render_index(service_instance)}
-            cfmap = KubernetesConfigMap(name="simpleexampleserviceinstance-map-%s" % service_instance.id,
+            cfmap = self.model_accessor.KubernetesConfigMap(name="simpleexampleserviceinstance-map-%s" % service_instance.id,
                                       trust_domain=slice.trust_domain,
                                       data=json.dumps(data))
             cfmap.save()
-            cfmap_mnt = KubernetesConfigVolumeMount(config=cfmap,
+            cfmap_mnt = self.model_accessor.KubernetesConfigVolumeMount(config=cfmap,
                                                     service_instance=compute_service_instance,
                                                     mount_path="/usr/local/apache2/htdocs")
             cfmap_mnt.save()
@@ -86,11 +88,14 @@
             # Create a secret and attach it to the compute instance
             data = {"service_secret.txt": base64.b64encode(str(exampleservice.service_secret)),
                     "tenant_secret.txt": base64.b64encode(str(service_instance.tenant_secret))}
-            secret = KubernetesSecret(name="simpleexampleserviceinstance-secret-%s" % service_instance.id,
+            secret = self.model_accessor.KubernetesSecret(name="simpleexampleserviceinstance-secret-%s" % service_instance.id,
                                       trust_domain=slice.trust_domain,
                                       data=json.dumps(data))
             secret.save()
-            secret_mnt = KubernetesSecretVolumeMount(secret=secret, service_instance=compute_service_instance, mount_path="/usr/local/apache2/secrets")
+            secret_mnt = self.model_accessor.KubernetesSecretVolumeMount(
+                secret=secret,
+                service_instance=compute_service_instance,
+                mount_path="/usr/local/apache2/secrets")
             secret_mnt.save()
 
             compute_service_instance.no_sync = False
diff --git a/xos/synchronizer/simpleexampleservice-synchronizer.py b/xos/synchronizer/simpleexampleservice-synchronizer.py
index 7caa954..26cc382 100644
--- a/xos/synchronizer/simpleexampleservice-synchronizer.py
+++ b/xos/synchronizer/simpleexampleservice-synchronizer.py
@@ -16,17 +16,18 @@
 
 # Runs the standard XOS synchronizer
 
-import importlib
 import os
-import sys
+from xossynchronizer import Synchronizer
 from xosconfig import Config
 
-config_file = os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + '/simpleexampleservice_config.yaml')
-Config.init(config_file, 'synchronizer-config-schema.yaml')
+base_config_file = os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + '/simpleexampleservice_config.yaml')
+mounted_config_file = os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + '/mounted_config.yaml')
 
-synchronizer_path = os.path.join(os.path.dirname(
-    os.path.realpath(__file__)), "../../synchronizers/new_base")
-sys.path.append(synchronizer_path)
-mod = importlib.import_module("xos-synchronizer")
-mod.main()
+if os.path.isfile(mounted_config_file):
+    Config.init(base_config_file, 'synchronizer-config-schema.yaml', mounted_config_file)
+else:
+    Config.init(base_config_file, 'synchronizer-config-schema.yaml')
+
+Synchronizer().run()
+
 
diff --git a/xos/synchronizer/steps/sync_simpleexampleserviceinstance.py b/xos/synchronizer/steps/sync_simpleexampleserviceinstance.py
index c8e7c52..73c5859 100644
--- a/xos/synchronizer/steps/sync_simpleexampleserviceinstance.py
+++ b/xos/synchronizer/steps/sync_simpleexampleserviceinstance.py
@@ -16,25 +16,16 @@
 
 import os
 import sys
-from synchronizers.new_base.syncstep import SyncStep
-from synchronizers.new_base.modelaccessor import *
+from xossynchronizer.steps.syncstep import SyncStep
 from xosconfig import Config
 from multistructlog import create_logger
 
 log = create_logger(Config().get('logging'))
 
 class SyncSimpleExampleServiceInstance(SyncStep):
-
-    provides = [SimpleExampleServiceInstance]
-
-    observes = SimpleExampleServiceInstance
-
+    observes = "SimpleExampleServiceInstance"
     requested_interval = 0
 
-    template_name = "simpleexampleserviceinstance_playbook.yaml"
-
-    service_key_name = "/opt/xos/synchronizers/exampleservicenew/simpleexampleservice_private_key"
-
     def __init__(self, *args, **kwargs):
         super(SyncSimpleExampleServiceInstance, self).__init__(*args, **kwargs)
 
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}
