diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py
index 58e9689..20c3a81 100644
--- a/planetstack/core/admin.py
+++ b/planetstack/core/admin.py
@@ -423,14 +423,14 @@
     list_filter = ('site',)
     inlines = [SitePrivilegeInline, SliceMembershipInline]
     fieldsets = (
-        (None, {'fields': ('email', 'password', 'site')}),
+        (None, {'fields': ('email', 'password', 'site', 'is_admin')}),
         ('Personal info', {'fields': ('firstname','lastname','phone', 'key')}),
         #('Important dates', {'fields': ('last_login',)}),
     )
     add_fieldsets = (
         (None, {
             'classes': ('wide',),
-            'fields': ('email', 'firstname', 'lastname', 'phone', 'site', 'key','password1', 'password2')}
+            'fields': ('email', 'firstname', 'lastname', 'phone', 'site', 'key','password1', 'password2', 'is_admin')}
         ),
     )
     search_fields = ('email',)
diff --git a/planetstack/core/models/__init__.py b/planetstack/core/models/__init__.py
index 0fe5e47..d922802 100644
--- a/planetstack/core/models/__init__.py
+++ b/planetstack/core/models/__init__.py
@@ -10,7 +10,5 @@
 from .slice import Slice
 from .slice import SliceMembership
 from .sliver import Sliver
-from .subnet import Subnet
 from .serviceclass import ServiceClass
 from .serviceresource import ServiceResource
-
diff --git a/planetstack/core/models/key.py b/planetstack/core/models/key.py
index 7a8b322..6fd7c34 100644
--- a/planetstack/core/models/key.py
+++ b/planetstack/core/models/key.py
@@ -1,8 +1,6 @@
 import os
 from django.db import models
 from core.models import PlCoreBase
-from openstack.manager import OpenStackManager
-
 
 # Create your models here.
 
@@ -17,13 +15,15 @@
 
     def save(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.save_key(self)
+        self.os_manager.save_key(self)
         super(Key, self).save(*args, **kwds)
 
     def delete(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.delete_key(self)
+        self.os_manager.delete_key(self)
         super(Key, self).delete(*args, **kwds) 
     
diff --git a/planetstack/core/models/role.py b/planetstack/core/models/role.py
index d3c577d..f6c2f2c 100644
--- a/planetstack/core/models/role.py
+++ b/planetstack/core/models/role.py
@@ -2,7 +2,6 @@
 import datetime
 from django.db import models
 from core.models import PlCoreBase
-from openstack.manager import OpenStackManager
 
 class Role(PlCoreBase):
 
@@ -15,13 +14,15 @@
 
     def save(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.save_role(self)
+        self.os_manager.save_role(self)
         super(Role, self).save(*args, **kwds)
     
     def delete(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.delete_role(self)   
+        self.os_manager.delete_role(self)   
         super(Role, self).delete(*args, **kwds)
             
diff --git a/planetstack/core/models/site.py b/planetstack/core/models/site.py
index 11e6a28..8626a0d 100644
--- a/planetstack/core/models/site.py
+++ b/planetstack/core/models/site.py
@@ -2,7 +2,6 @@
 from django.db import models
 from core.models import PlCoreBase
 from core.models import DeploymentNetwork
-from openstack.manager import OpenStackManager
 
 class Site(PlCoreBase):
 
@@ -22,15 +21,17 @@
 
     def save(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.save_site(self)
+        self.os_manager.save_site(self)
         super(Site, self).save(*args, **kwds)               
 
 
     def delete(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.delete_site(self)
+        self.os_manager.delete_site(self)
         super(Site, self).delete(*args, **kwds)         
         
 
@@ -44,12 +45,14 @@
 
     def save(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
             self.os_manager.driver.add_user_role(self.user.kuser_id, self.site.tenant_id, self.role.role_type)
         super(SitePrivilege, self).save(*args, **kwds)
 
     def delete(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
             self.os_manager.driver.delete_user_role(self.user.kuser_id, self.site.tenant_id, self.role.role_type)
         super(SitePrivilege, self).delete(*args, **kwds)
diff --git a/planetstack/core/models/slice.py b/planetstack/core/models/slice.py
index 2fd9fd3..edbe824 100644
--- a/planetstack/core/models/slice.py
+++ b/planetstack/core/models/slice.py
@@ -5,7 +5,6 @@
 from core.models import User
 from core.models import Role
 from core.models import DeploymentNetwork
-from openstack.manager import OpenStackManager
 
 # Create your models here.
 
@@ -29,14 +28,16 @@
 
     def save(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.save_slice(self)
+        self.os_manager.save_slice(self)
         super(Slice, self).save(*args, **kwds)
 
     def delete(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.delete_slice(self)
+        self.os_manager.delete_slice(self)
         super(Slice, self).delete(*args, **kwds)    
 
 class SliceMembership(PlCoreBase):
@@ -48,6 +49,7 @@
 
     def save(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
             if self.os_manager.driver:
                 self.os_manager.driver.add_user_role(self.user.kuser_id, self.slice.tenant_id, self.role.role_type)
@@ -55,6 +57,7 @@
 
     def delete(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
             if self.os_manager.driver:
                 self.os_manager.driver.delete_user_role(self.user.kuser_id, self.slice.tenant_id, self.role.role_type)
diff --git a/planetstack/core/models/sliver.py b/planetstack/core/models/sliver.py
index 8ebcbd4..ff074a6 100644
--- a/planetstack/core/models/sliver.py
+++ b/planetstack/core/models/sliver.py
@@ -8,7 +8,6 @@
 from core.models import Node
 from core.models import Site
 from core.models import DeploymentNetwork
-from openstack.manager import OpenStackManager
 
 # Create your models here.
 class Sliver(PlCoreBase):
@@ -30,12 +29,14 @@
         if not self.name:
             self.name = self.slice.name
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.save_sliver(self)
+        self.os_manager.save_sliver(self)
         super(Sliver, self).save(*args, **kwds)
 
     def delete(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.delete_sliver(self)
+        self.os_manager.delete_sliver(self)
         super(Sliver, self).delete(*args, **kwds)
diff --git a/planetstack/core/models/subnet.py b/planetstack/core/models/subnet.py
deleted file mode 100644
index 37175ec..0000000
--- a/planetstack/core/models/subnet.py
+++ /dev/null
@@ -1,30 +0,0 @@
-import os
-import commands    
-from django.db import models
-from core.models import PlCoreBase
-from core.models import Slice
-from openstack.manager import OpenStackManager
-
-# Create your models here.
-
-class Subnet(PlCoreBase):
-    subnet_id = models.CharField(max_length=256, unique=True)
-    cidr = models.CharField(max_length=20)
-    ip_version = models.IntegerField()
-    start = models.IPAddressField()
-    end = models.IPAddressField()
-    slice = models.ForeignKey(Slice, related_name='subnet')
-
-    def __unicode__(self):  return u'%s' % (self.slice.name)
-
-    def save(self, *args, **kwds):
-        if not hasattr(self, 'os_manager'):
-            setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.save_subnet(self)
-        super(Subnet, self).save(*args, **kwds)
-
-    def delete(self, *args, **kwds):
-        if not hasattr(self, 'os_manager'):
-            setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.delete_subnet(self)
-        super(Subnet, self).delete(*args, **kwds)
diff --git a/planetstack/core/models/user.py b/planetstack/core/models/user.py
index 38c0d89..e6c42e7 100644
--- a/planetstack/core/models/user.py
+++ b/planetstack/core/models/user.py
@@ -5,7 +5,6 @@
 from core.models import PlCoreBase
 from core.models import Site
 from core.models import Key
-from openstack.manager import OpenStackManager
 from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
 
 # Create your models here.
@@ -110,8 +109,9 @@
 
     def save(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager 
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.save_user(self)
+        self.os_manager.save_user(self)
 
         if not self.id:
             self.set_password(self.password)    
@@ -119,7 +119,8 @@
 
     def delete(self, *args, **kwds):
         if not hasattr(self, 'os_manager'):
+            from openstack.manager import OpenStackManager
             setattr(self, 'os_manager', OpenStackManager())
-            self.os_manager.delete_user(self)
+        self.os_manager.delete_user(self)
 
         super(User, self).delete(*args, **kwds)    
diff --git a/planetstack/openstack/driver.py b/planetstack/openstack/driver.py
index eba424a..f84fbb8 100644
--- a/planetstack/openstack/driver.py
+++ b/planetstack/openstack/driver.py
@@ -2,7 +2,6 @@
 from planetstack.config import Config
 from openstack.client import OpenStackClient
 
-has_openstack = False
 class OpenStackDriver:
 
     def __init__(self, config = None, client=None): 
@@ -12,10 +11,7 @@
             self.config = Config() 
 
         self.admin_client = OpenStackClient()
-        if has_openstack:
-            self.admin_user = self.admin_client.keystone.users.find(name=self.admin_client.keystone.username)
-        else:
-            self.admin_user = None
+        self.admin_user = self.admin_client.keystone.users.find(name=self.admin_client.keystone.username)
 
         if client:
             self.shell = client
diff --git a/planetstack/openstack/manager.py b/planetstack/openstack/manager.py
index 788699b..857e225 100644
--- a/planetstack/openstack/manager.py
+++ b/planetstack/openstack/manager.py
@@ -1,3 +1,6 @@
+import os
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
+
 from netaddr import IPAddress, IPNetwork
 from planetstack import settings
 from django.core import management
@@ -10,8 +13,7 @@
 except:
     has_openstack = False
 
-#manager_enabled = Config().api_nova_enabled
-manager_enabled = False
+manager_enabled = Config().api_nova_enabled
 
 def require_enabled(callable):
     def wrapper(*args, **kwds):
@@ -277,6 +279,7 @@
         Node.objects.filter(name__in=old_node_names).delete()
 
     def refresh_images(self):
+        from core.models.image import Image
         # collect local images
         images = Image.objects.all()
         images_dict = {}    
