diff --git a/planetstack/ec2_observer/backend.py b/planetstack/ec2_observer/backend.py
index a26aeae..1a2545d 100644
--- a/planetstack/ec2_observer/backend.py
+++ b/planetstack/ec2_observer/backend.py
@@ -1,6 +1,6 @@
 import threading
 import time
-from ec2_observer.event_loop import PlanetStackObserver
+from ec2_observer.event_loop import XOSObserver
 from ec2_observer.event_manager import EventListener
 from util.logger import Logger, logging
 
@@ -10,7 +10,7 @@
     
     def run(self):
         # start the openstack observer
-        observer = PlanetStackObserver()
+        observer = XOSObserver()
         observer_thread = threading.Thread(target=observer.run)
         observer_thread.start()
         
diff --git a/planetstack/ec2_observer/deleter.py b/planetstack/ec2_observer/deleter.py
index f7d459d..93fa572 100644
--- a/planetstack/ec2_observer/deleter.py
+++ b/planetstack/ec2_observer/deleter.py
@@ -9,7 +9,7 @@
                 pass
 
 	def call(self, pk, model_dict):
-		# Fetch object from PlanetStack db and delete it
+		# Fetch object from XOS db and delete it
 		pass
 
 	def __call__(self, *args, **kwargs):
diff --git a/planetstack/ec2_observer/ec2_backend.py b/planetstack/ec2_observer/ec2_backend.py
index 5a00e71..a26ddfd 100644
--- a/planetstack/ec2_observer/ec2_backend.py
+++ b/planetstack/ec2_observer/ec2_backend.py
@@ -1,6 +1,6 @@
 import threading
 import time
-from ec2_observer.event_loop import PlanetStackObserver
+from ec2_observer.event_loop import XOSObserver
 from ec2_observer.event_manager import EventListener
 from util.logger import Logger, logging
 
@@ -11,7 +11,7 @@
     def run(self):
         try:
             # start the openstack observer
-            observer = PlanetStackObserver()
+            observer = XOSObserver()
             observer_thread = threading.Thread(target=observer.run)
             observer_thread.start()
             
diff --git a/planetstack/ec2_observer/event_loop.py b/planetstack/ec2_observer/event_loop.py
index fea2e3e..bdbbab0 100644
--- a/planetstack/ec2_observer/event_loop.py
+++ b/planetstack/ec2_observer/event_loop.py
@@ -48,7 +48,7 @@
 				ig=[k]
 	return ig
 
-class PlanetStackObserver:
+class XOSObserver:
 	#sync_steps = [SyncNetworks,SyncNetworkSlivers,SyncSites,SyncSitePrivilege,SyncSlices,SyncSliceMemberships,SyncSlivers,SyncSliverIps,SyncExternalRoutes,SyncUsers,SyncRoles,SyncNodes,SyncImages,GarbageCollector]
 	sync_steps = []
 
diff --git a/planetstack/ec2_observer/syncstep.py b/planetstack/ec2_observer/syncstep.py
index c6ed066..3a0e918 100644
--- a/planetstack/ec2_observer/syncstep.py
+++ b/planetstack/ec2_observer/syncstep.py
@@ -11,7 +11,7 @@
     pass
 
 class SyncStep:
-    """ A PlanetStack Sync step. 
+    """ A XOS Sync step. 
 
     Attributes:
         psmodel        Model name the step synchronizes 
@@ -22,7 +22,7 @@
         try:
             sync_config_dir = Config().sync_config_dir
         except:
-            sync_config_dir = '/etc/planetstack/sync'
+            sync_config_dir = '/etc/planetstack/sync'    # XXX TODO: update path
         prop_config_path = '/'.join(sync_config_dir,self.name,prop)
         return open(prop_config_path).read().rstrip()
 
@@ -30,7 +30,7 @@
         """Initialize a sync step
            Keyword arguments:
                    name -- Name of the step
-                provides -- PlanetStack models sync'd by this step
+                provides -- XOS models sync'd by this step
         """
         dependencies = []
         self.driver = args.get('driver')
diff --git a/planetstack/ec2_observer/toposort.py b/planetstack/ec2_observer/toposort.py
index 16469b4..c0ec779 100644
--- a/planetstack/ec2_observer/toposort.py
+++ b/planetstack/ec2_observer/toposort.py
@@ -89,7 +89,7 @@
 	return order + noorder
 
 def main():
-	graph_file=open('planetstack.deps').read()
+	graph_file=open('xos.deps').read()
 	g = json.loads(graph_file)
 	print toposort(g)
 
diff --git a/planetstack/openstack_observer/backend.py b/planetstack/openstack_observer/backend.py
index fe623ca..7b67494 100644
--- a/planetstack/openstack_observer/backend.py
+++ b/planetstack/openstack_observer/backend.py
@@ -1,6 +1,6 @@
 import threading
 import time
-from observer.event_loop import PlanetStackObserver
+from observer.event_loop import XOSObserver
 from observer.event_manager import EventListener
 from util.logger import Logger, logging
 from model_policy import run_policy
@@ -11,7 +11,7 @@
     
     def run(self):
             # start the openstack observer
-            observer = PlanetStackObserver()
+            observer = XOSObserver()
             observer_thread = threading.Thread(target=observer.run)
             observer_thread.start()
             
diff --git a/planetstack/openstack_observer/deleter.py b/planetstack/openstack_observer/deleter.py
index f7d459d..93fa572 100644
--- a/planetstack/openstack_observer/deleter.py
+++ b/planetstack/openstack_observer/deleter.py
@@ -9,7 +9,7 @@
                 pass
 
 	def call(self, pk, model_dict):
-		# Fetch object from PlanetStack db and delete it
+		# Fetch object from XOS db and delete it
 		pass
 
 	def __call__(self, *args, **kwargs):
diff --git a/planetstack/openstack_observer/event_loop.py b/planetstack/openstack_observer/event_loop.py
index 752cb86..0da51b8 100644
--- a/planetstack/openstack_observer/event_loop.py
+++ b/planetstack/openstack_observer/event_loop.py
@@ -64,7 +64,7 @@
 				ig=[k]
 	return ig
 
-class PlanetStackObserver:
+class XOSObserver:
 	#sync_steps = [SyncNetworks,SyncNetworkSlivers,SyncSites,SyncSitePrivilege,SyncSlices,SyncSliceMemberships,SyncSlivers,SyncSliverIps,SyncExternalRoutes,SyncUsers,SyncRoles,SyncNodes,SyncImages,GarbageCollector]
 	sync_steps = []
 
diff --git a/planetstack/openstack_observer/openstacksyncstep.py b/planetstack/openstack_observer/openstacksyncstep.py
index 51b510f..cc568f8 100644
--- a/planetstack/openstack_observer/openstacksyncstep.py
+++ b/planetstack/openstack_observer/openstacksyncstep.py
@@ -3,7 +3,7 @@
 from syncstep import SyncStep
 
 class OpenStackSyncStep(SyncStep):
-    """ PlanetStack Sync step for copying data to OpenStack 
+    """ XOS Sync step for copying data to OpenStack 
     """ 
     
     def __init__(self, **args):
diff --git a/planetstack/openstack_observer/syncstep.py b/planetstack/openstack_observer/syncstep.py
index 0541c67..4ffa211 100644
--- a/planetstack/openstack_observer/syncstep.py
+++ b/planetstack/openstack_observer/syncstep.py
@@ -29,7 +29,7 @@
     pass
 
 class SyncStep(object):
-    """ A PlanetStack Sync step. 
+    """ An XOS Sync step. 
 
     Attributes:
         psmodel        Model name the step synchronizes 
@@ -40,7 +40,7 @@
         try:
             sync_config_dir = Config().sync_config_dir
         except:
-            sync_config_dir = '/etc/planetstack/sync'
+            sync_config_dir = '/etc/planetstack/sync'     # XXX TODO: update path
         prop_config_path = '/'.join(sync_config_dir,self.name,prop)
         return open(prop_config_path).read().rstrip()
 
@@ -48,7 +48,7 @@
         """Initialize a sync step
            Keyword arguments:
                    name -- Name of the step
-                provides -- PlanetStack models sync'd by this step
+                provides -- XOS models sync'd by this step
         """
         dependencies = []
         self.driver = args.get('driver')
diff --git a/planetstack/openstack_observer/toposort.py b/planetstack/openstack_observer/toposort.py
index 5170f20..6839861 100644
--- a/planetstack/openstack_observer/toposort.py
+++ b/planetstack/openstack_observer/toposort.py
@@ -62,7 +62,7 @@
 	return order + noorder
 
 def main():
-	graph_file=open('planetstack.deps').read()
+	graph_file=open('xos.deps').read()
 	g = json.loads(graph_file)
 	print toposort(g)
 
