diff --git a/planetstack/observer/steps/sync_network_deployments.py b/planetstack/observer/steps/sync_network_deployments.py
index a8d6262..d27430d 100644
--- a/planetstack/observer/steps/sync_network_deployments.py
+++ b/planetstack/observer/steps/sync_network_deployments.py
@@ -29,6 +29,10 @@
             network_deploy_lookup[network_deployment.network].append(network_deployment.deployment)
 
         for network in Network.objects.filter():
+            # ignore networks that have
+            # template.visibility = private and template.translation = none
+            if network.template.visibility == 'private' and not network.template.translation == 'none':
+                continue
             expected_deployments = slice_deploy_lookup[network.owner]
             for expected_deployment in expected_deployments:
                 if network not in network_deploy_lookup or \
diff --git a/planetstack/observer/steps/sync_slice_deployments.py b/planetstack/observer/steps/sync_slice_deployments.py
index 01a10dd..c7b20ce 100644
--- a/planetstack/observer/steps/sync_slice_deployments.py
+++ b/planetstack/observer/steps/sync_slice_deployments.py
@@ -89,41 +89,6 @@
                                                           tenant=tenant.name, 
                                                           deployment=slice_deployment.deployment.name)
 
-                # create a public key for the slice creator
-                if deployment_user.user.public_key:
-                    keyname = deployment_user.user.email.lower().replace('@', 'AT').replace('.', '') +\
-                              slice_deployment.slice.name
-                    slice_deployment.keyname = keyname 
-                    key_fields =  {'name': keyname,
-                                   'public_key': deployment_user.user.public_key} 
-                    client_driver.create_keypair(**key_fields)
-
-                # create network
-                #network = client_driver.create_network(slice_deployment.slice.name)
-                #slice_deployment.network_id = network['id']
-
-                # create router
-                #router = client_driver.create_router(slice_deployment.slice.name)
-                #slice_deployment.router_id = router['id']
-
-                # create subnet for slice's private network
-                #next_subnet = self.get_next_subnet(deployment=slice_deployment.deployment.name)
-                #cidr = str(next_subnet.cidr)
-                #ip_version = next_subnet.version
-                #start = str(next_subnet[2])
-                #end = str(next_subnet[-2]) 
-                #subnet = client_driver.create_subnet(name=slice_deployment.slice.name,
-                #                                   network_id = network['id'],
-                #                                   cidr_ip = cidr,
-                #                                   ip_version = ip_version,
-                #                                   start = start,
-                #                                   end = end)
-                #slice_deployment.subnet_id = subnet['id']
-                # add subnet as interface to slice's router
-                #client_driver.add_router_interface(router['id'], subnet['id'])
-                # add external route
-                #client_driver.add_external_route(subnet)
-
 
         if slice_deployment.id and slice_deployment.tenant_id:
             driver = self.driver.admin_driver(deployment=slice_deployment.deployment.name)
diff --git a/planetstack/observer/steps/sync_slivers.py b/planetstack/observer/steps/sync_slivers.py
index 3759747..473b3ac 100644
--- a/planetstack/observer/steps/sync_slivers.py
+++ b/planetstack/observer/steps/sync_slivers.py
@@ -67,7 +67,15 @@
                     image_id = image['id']
                     
             # look up key name at the deployment
+            # create/fetch keypair
             keyname = None
+            if sliver.creator.public_key:
+                keyname = sliver.creator.email.lower().replace('@', 'AT').replace('.', '') +\
+                          sliver.slice.name
+                key_fields =  {'name': keyname,
+                               'public_key': sliver.creator.public_key}
+                driver.create_keypair(**key_fields)       
+ 
             slice_deployments = SliceDeployments.objects.filter(slice = sliver.slice, 
                                                                deployment = sliver.deploymentNetwork)
             for slice_deployment in slice_deployments:
diff --git a/planetstack/observer/steps/sync_user_deployments.py b/planetstack/observer/steps/sync_user_deployments.py
index cbbcb17..39943f7 100644
--- a/planetstack/observer/steps/sync_user_deployments.py
+++ b/planetstack/observer/steps/sync_user_deployments.py
@@ -29,7 +29,6 @@
         for user_deployment in UserDeployments.objects.all():
             user_deploy_lookup[user_deployment.user].append(user_deployment.deployment)
        
-        user_deployments = []
         all_deployments = Deployment.objects.filter() 
         for user in User.objects.all():
             if user.is_admin:
@@ -45,13 +44,14 @@
                   expected_deployment not in user_deploy_lookup[user]: 
                     # add new record
                     ud = UserDeployments(user=user, deployment=expected_deployment)
-                    user_deployments.append(ud)
+                    ud.save()
+                    #user_deployments.append(ud)
                 #else:
                 #    # update existing record
                 #    ud = UserDeployments.objects.get(user=user, deployment=expected_deployment)
                 #    user_deployments.append(ud)
 
-        return user_deployments
+        return UserDeployments.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)) 
 
     def sync_record(self, user_deployment):
         logger.info("sync'ing user %s at deployment %s" % (user_deployment.user, user_deployment.deployment.name))
@@ -96,5 +96,3 @@
         #    user_driver.create_keypair(**key_fields)
 
         user_deployment.save()
-        user = User.objects.get(id=user_deployment.user.id)
-        user.save()
diff --git a/planetstack/observer/steps/sync_users.py b/planetstack/observer/steps/sync_users.py
index 2550104..71f9c0f 100644
--- a/planetstack/observer/steps/sync_users.py
+++ b/planetstack/observer/steps/sync_users.py
@@ -4,7 +4,7 @@
 from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
-from core.models.user import User
+from core.models.user import User, UserDeployments
 
 class SyncUsers(OpenStackSyncStep):
     provides=[User]
@@ -14,5 +14,7 @@
         return User.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
 
     def sync_record(self, user):
-        #user.save()
-        pass 
+        for user_deployment in UserDeployments.objects.filter(user=user):
+            # bump the 'updated' field so user account are updated across 
+            # deployments.
+            user_deployment.save()
diff --git a/planetstack/openstack/driver.py b/planetstack/openstack/driver.py
index b8faf25..f5abb02 100644
--- a/planetstack/openstack/driver.py
+++ b/planetstack/openstack/driver.py
@@ -417,12 +417,9 @@
         if not security_group:
             security_group = self.config.nova_default_security_group
 
-        personality = []
-        if pubkeys:
-            personality.append({
-                'path': '/root/.ssh/authorized_keys',
-                'contents':"\n".join(pubkeys),
-        })       
+        files = {}
+        #if pubkeys:
+        #    files["/root/.ssh/authorized_keys"] = "\n".join(pubkeys).encode('base64')
         hints = {}
         availability_zone = None
         if hostname:
@@ -433,7 +430,7 @@
                                             flavor=flavor.id,
                                             image=image_id,
                                             security_group = security_group,
-                                            personality = personality,
+                                            #files = files,
                                             scheduler_hints=hints,
                                             availability_zone=availability_zone,
                                             nics=nics,
diff --git a/planetstack/planetstack-backend.py b/planetstack/planetstack-backend.py
index 7d94b67..8a2eff2 100755
--- a/planetstack/planetstack-backend.py
+++ b/planetstack/planetstack-backend.py
@@ -1,10 +1,41 @@
 #!/usr/bin/env python
 import os
+import argparse
 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
-from observer.backend import Backend 
+from observer.backend import Backend
+from planetstack.config import Config 
 
-if __name__ == '__main__':
+config = Config()
+
+# after http://www.erlenstar.demon.co.uk/unix/faq_2.html
+def daemon():
+    """Daemonize the current process."""
+    if os.fork() != 0: os._exit(0)
+    os.setsid()
+    if os.fork() != 0: os._exit(0)
+    os.umask(0)
+    devnull = os.open(os.devnull, os.O_RDWR)
+    os.dup2(devnull, 0)
+    # xxx fixme - this is just to make sure that nothing gets stupidly lost - should use devnull
+    logdir=os.path.dirname(config.observer_logfile)
+    # when installed in standalone we might not have httpd installed
+    if not os.path.isdir(logdir): os.mkdir(logdir)
+    crashlog = os.open('%s'%config.observer_logfile, os.O_RDWR | os.O_APPEND | os.O_CREAT, 0644)
+    os.dup2(crashlog, 1)
+    os.dup2(crashlog, 2)
+
+def main():
+    # Generate command line parser
+    parser = argparse.ArgumentParser(usage='%(prog)s [options]')
+    parser.add_argument('-d', '--daemon', dest='daemon', action='store_true', default=False, 
+                        help='Run as daemon.')
+    args = parser.parse_args()
+       
+    if args.daemon: daemon()
 
     backend = Backend()
-    backend.run()
- 
+    backend.run()    
+
+if __name__ == '__main__':
+    
+    main() 
diff --git a/planetstack/plstackapi_config b/planetstack/plstackapi_config
index 6abdaaf..5d95231 100644
--- a/planetstack/plstackapi_config
+++ b/planetstack/plstackapi_config
@@ -19,6 +19,7 @@
 omf_enabled=0
 mail_support_address=support@localhost
 nova_enabled=True
+logfile=/var/log/planetstack.log
 
 [nova]
 admin_user=admin@domain.com
@@ -31,3 +32,4 @@
 
 [observer]
 dependency_graph=/opt/planetstack/model-deps
+logfile=/var/log/planetstack_backend.log
