diff --git a/xos/synchronizers/base/event_loop.py b/xos/synchronizers/base/event_loop.py
index 6644b09..47845f6 100644
--- a/xos/synchronizers/base/event_loop.py
+++ b/xos/synchronizers/base/event_loop.py
@@ -18,7 +18,6 @@
 from django.db.models import F, Q
 from django.db import connection
 from django.db import reset_queries
-from openstack_xos.driver import OpenStackDriver
 from xos.logger import Logger, logging, logger
 #from timeout import timeout
 from xos.config import Config, XOS_DIR
@@ -26,7 +25,6 @@
 from syncstep import SyncStep
 from toposort import toposort
 from synchronizers.base.error_mapper import *
-from synchronizers.openstack.openstacksyncstep import OpenStackSyncStep
 from synchronizers.base.steps.sync_object import SyncObject
 from django.utils import timezone
 from diag import update_diag
@@ -71,6 +69,15 @@
 		 self.enabled = True
 		 self.dependency_graph = None
 
+# Everyone gets NoOpDriver by default. To use a different driver, call
+# set_driver() below.
+
+DRIVER = NoOpDriver()
+
+def set_driver(x):
+    global DRIVER
+    DRIVER = x
+
 STEP_STATUS_WORKING=1
 STEP_STATUS_OK=2
 STEP_STATUS_KO=3
@@ -96,12 +103,8 @@
 		self.load_sync_steps()
 		self.event_cond = threading.Condition()
 
-		self.driver_kind = getattr(Config(), "observer_driver", "openstack")
-		self.observer_name = getattr(Config(), "observer_name", "")
-		if self.driver_kind=="openstack":
-			self.driver = OpenStackDriver()
-		else:
-			self.driver = NoOpDriver()
+                self.driver = DRIVER
+                self.observer_name = getattr(Config(), "observer_name", "")
 
         def consolePrint(self, what):
             if getattr(Config(), "observer_console_print", True):
@@ -136,7 +139,7 @@
 					# provides field (this eliminates the abstract base classes
 					# since they don't have a provides)
 
-					if inspect.isclass(c) and (issubclass(c, SyncStep) or issubclass(c,OpenStackSyncStep)) and hasattr(c,"provides") and (c not in self.sync_steps):
+					if inspect.isclass(c) and issubclass(c, SyncStep) and hasattr(c,"provides") and (c not in self.sync_steps):
 						self.sync_steps.append(c)
 		logger.info('loaded sync steps: %s' % ",".join([x.__name__ for x in self.sync_steps]))
 
@@ -455,9 +458,6 @@
 		if not self.driver.enabled:
 			return
 
-		if (self.driver_kind=="openstack") and (not self.driver.has_openstack):
-			return
-
 		while True:
                     logger.info('Waiting for event')
                     self.wait_for_event(timeout=5)
diff --git a/xos/synchronizers/openstack/xos-synchronizer.py b/xos/synchronizers/openstack/xos-synchronizer.py
index 493b94a..852ee0e 100644
--- a/xos/synchronizers/openstack/xos-synchronizer.py
+++ b/xos/synchronizers/openstack/xos-synchronizer.py
@@ -7,6 +7,7 @@
 
 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
 from synchronizers.base.backend import Backend
+from synchronizers.base.event_loop import set_driver
 from xos.config import Config, DEFAULT_CONFIG_FN
 from core.models import Instance,NetworkTemplate
 from xos.logger import Logger, logging, logger
@@ -20,6 +21,10 @@
 
 config = Config()
 
+# set the driver.
+from openstack_xos.driver import OpenStackDriver
+set_driver(OpenStackDriver())
+
 # after http://www.erlenstar.demon.co.uk/unix/faq_2.html
 def daemon():
     """Daemonize the current process."""
