diff --git a/planetstack/openstack/driver.py b/planetstack/openstack/driver.py
index 14eea41..c01fede 100644
--- a/planetstack/openstack/driver.py
+++ b/planetstack/openstack/driver.py
@@ -264,10 +264,11 @@
                     gw_port = port
                     router_id = gw_port['device_id']
                     router = self.shell.quantum.show_router(router_id)['router']
-                    ext_net = router['external_gateway_info']['network_id']
-                    for port in ports:
-                        if port['device_id'] == router_id and port['network_id'] == ext_net:
-                            ip_address = port['fixed_ips'][0]['ip_address']
+                    if router:
+                        ext_net = router['external_gateway_info']['network_id']
+                        for port in ports:
+                            if port['device_id'] == router_id and port['network_id'] == ext_net:
+                                ip_address = port['fixed_ips'][0]['ip_address']
 
         if ip_address:
             # check if external route already exists
@@ -278,7 +279,8 @@
                         route_exists = True
             if not route_exists:
                 cmd = "route add -net %s dev br-ex gw %s" % (subnet['cidr'], ip_address)
-                commands.getstatusoutput(cmd)
+                s, o = commands.getstatusoutput(cmd)
+                #print cmd, "\n", s, o
 
         return 1
 
diff --git a/planetstack/openstack/observer.py b/planetstack/openstack/observer.py
index 8da0999..08cbf46 100644
--- a/planetstack/openstack/observer.py
+++ b/planetstack/openstack/observer.py
@@ -27,7 +27,8 @@
                 self.sync_user_tenant_roles()
                 self.sync_slivers()
                 self.sync_sliver_ips()
-                time.sleep(7)
+                self.sync_external_routes()
+                time.sleep(10)
             except:
                 traceback.print_exc() 
 
@@ -277,7 +278,10 @@
 
     def sync_external_routes(self):
         routes = self.manager.driver.get_external_routes() 
-        subnets = self.manager.driver.shell.quantum.list_subnets()
+        subnets = self.manager.driver.shell.quantum.list_subnets()['subnets']
         for subnet in subnets:
-            self.manager.driver.add_external_route(subnet, routes)         
+            try: 
+                self.manager.driver.add_external_route(subnet, routes)         
+            except: 
+                logger.log_exc("failed to add external route for subnet %s" % subnet)
  
