diff --git a/planetstack/core/views/legacyapi.py b/planetstack/core/views/legacyapi.py
index 520f137..0736359 100644
--- a/planetstack/core/views/legacyapi.py
+++ b/planetstack/core/views/legacyapi.py
@@ -12,8 +12,8 @@
 from django.views.decorators.csrf import csrf_exempt
 
 def ps_id_to_pl_id(x):
-    # Since we don't want the PlanetStack object IDs to conflict with existing
-    # PlanetLab object IDs in the CMI, just add 100000 to the PlanetStack object
+    # Since we don't want the XOS object IDs to conflict with existing
+    # PlanetLab object IDs in the CMI, just add 100000 to the XOS object
     # IDs.
     return 100000 + x
 
@@ -56,17 +56,17 @@
             node_ids.append(ps_id_to_pl_id(ps_sliver.node.id))
 
         slice = {"instantiation": "plc-instantiated",
-                 "description": "planetstack slice",
+                 "description": "XOS slice",
                  "slice_id": pl_slice_id(ps_slice, slice_remap),
                  "node_ids": node_ids,
-                 "url": "planetstack",
+                 "url": "xos",
                  "max_nodes": 1000,
                  "peer_slice_id": None,
                  "slice_tag_ids": [],
                  "peer_id": None,
                  "site_id": ps_id_to_pl_id(ps_slice.site_id),
                  "name": pl_slicename(ps_slice, slice_remap),
-                 "planetstack_name": ps_slice.name}
+                 "planetstack_name": ps_slice.name}     # keeping planetstack_name for now, to match the modified config.py
 
                  # creator_person_id, person_ids, expires, created
 
@@ -91,7 +91,7 @@
                 "hostname": ps_node.name.lower(),
                 "conf_file_ids": [],
                 "slice_ids": slice_ids,
-                "model": "planetstack",
+                "model": "xos",
                 "peer_id": None,
                 "node_tag_ids": []}
 
@@ -289,15 +289,8 @@
     slices = GetSlices(slice_remap = DEFAULT_REMAP)
     nodes = GetNodes(slice_remap = DEFAULT_REMAP)
 
-    if ("-d" in sys.argv):
-        config = GetConfiguration({"name": "princeton_vcoblitz"}, slice_remap = DEFAULT_REMAP)
-        print config
-        print slices
-        print nodes
-    else:
-        configs={}
-        configs[slicename] = GetConfiguration({"name": "princeton_vcoblitz"})
+    config = GetConfiguration({"name": "princeton_vcoblitz"}, slice_remap = DEFAULT_REMAP)
+    print config
+    print slices
+    print nodes
 
-        file("xos.config","w").write(json.dumps(configs))
-        file("planetstack_slices","w").write(json.dumps(slices))
-        file("planetstack_nodes","w").write(json.dumps(nodes))
diff --git a/planetstack/hpc_observer/Makefile b/planetstack/hpc_observer/Makefile
index 2f487ea..4a03bd4 100644
--- a/planetstack/hpc_observer/Makefile
+++ b/planetstack/hpc_observer/Makefile
@@ -8,9 +8,3 @@
 	cp deleters/*.py BUILD/hpc_observer/deleters/
 	mkdir -p TARS
 	cd BUILD; tar -czf ../TARS/hpc_observer.tar.gz hpc_observer
-
-upload: hpcobserver.tar.gz
-	scp TARS/hpc_observer.tar.gz root@viccidev1.cs.princeton.edu:/opt/planetstack/
-
-up_install: upload
-	ssh root@viccidev1.cs.princeton.edu -C "cd /opt/planetstack; tar -xzf hpc_observer.tar.gz"
diff --git a/planetstack/hpc_observer/fsck.py b/planetstack/hpc_observer/fsck.py
index 2fbb002..0c551f8 100644
--- a/planetstack/hpc_observer/fsck.py
+++ b/planetstack/hpc_observer/fsck.py
@@ -17,7 +17,7 @@
 
 logger = Logger(level=logging.INFO)
 
-class PlanetStackConsistencyCheck:
+class XOSConsistencyCheck:
 	def __init__(self):
                 self.sync_steps = []
 		self.load_sync_step_modules()
@@ -71,7 +71,7 @@
     if django_setup: # 1.7
         django_setup()
 
-    cc = PlanetStackConsistencyCheck()
+    cc = XOSConsistencyCheck()
     cc.run()
 
 if __name__ == '__main__':
diff --git a/planetstack/uwsgi/planetstack.ini b/planetstack/uwsgi/planetstack.ini
index 9377201..da7f7dd 100644
--- a/planetstack/uwsgi/planetstack.ini
+++ b/planetstack/uwsgi/planetstack.ini
@@ -2,7 +2,7 @@
 chdir = /opt/xos
 module = xos.wsgi:application
 env = DJANGO_SETTINGS_MODULE=xos.settings
-socket = /var/run/uwsgi/planetstack.sock
+socket = /var/run/uwsgi/xos.sock
 socket = 127.0.0.1:9001
 http = 128.112.139.48:9002
 stats = 127.0.0.1:9003
diff --git a/planetstack/xos/wsgi.py b/planetstack/xos/wsgi.py
index 1e27e10..9b70770 100644
--- a/planetstack/xos/wsgi.py
+++ b/planetstack/xos/wsgi.py
@@ -1,5 +1,5 @@
 """
-WSGI config for planetstack project.
+WSGI config for XOS.
 
 This module contains the WSGI application used by Django's development server
 and any production WSGI deployments. It should expose a module-level variable
