diff --git a/planetstack/core/models/__init__.py b/planetstack/core/models/__init__.py
index b453a14..6926d90 100644
--- a/planetstack/core/models/__init__.py
+++ b/planetstack/core/models/__init__.py
@@ -6,8 +6,8 @@
 from .service import ServiceAttribute
 from .tag import Tag
 from .role import Role
-from .deployment import Deployment
-from .site import Site
+#from .deployment import Deployment
+from .site import Site,Deployment, DeploymentRole, DeploymentPrivilege, SiteDeployments
 from .user import User
 from .serviceclass import ServiceClass
 from .slice import Slice
@@ -19,8 +19,8 @@
 from .slice import SlicePrivilege
 from .site import SiteRole
 from .site import SitePrivilege
-from .deployment import DeploymentRole
-from .deployment import DeploymentPrivilege
+#from .deployment import DeploymentRole
+#from .deployment import DeploymentPrivilege
 from .planetstack import PlanetStackRole
 from .planetstack import PlanetStackPrivilege
 from .slicetag import SliceTag
diff --git a/planetstack/core/models/deployment.py b/planetstack/core/models/deployment.py
index 9a4cbe1..1e5e6dc 100644
--- a/planetstack/core/models/deployment.py
+++ b/planetstack/core/models/deployment.py
@@ -5,8 +5,14 @@
 
 # Create your models here.
 
+class ManyToManyField_NoSyncdb(models.ManyToManyField):
+    def __init__(self, *args, **kwargs):
+        super(ManyToManyField_NoSyncdb, self).__init__(*args, **kwargs)
+        self.creates_table = False
+
 class Deployment(PlCoreBase):
     name = models.CharField(max_length=200, unique=True, help_text="Name of the Deployment")
+#    sites = ManyToManyField_NoSyncdb('Site', through=Site.deployments.through, blank=True)
 
     def __unicode__(self):  return u'%s' % (self.name)
 
@@ -15,7 +21,6 @@
 
     ROLE_CHOICES = (('admin','Admin'),)
     role = models.CharField(choices=ROLE_CHOICES, unique=True, max_length=30)
-    krole_id = models.CharField(max_length=80, verbose_name="Keystone role id", null=True, blank=True)
 
     def __unicode__(self):  return u'%s' % (self.role)
 
diff --git a/planetstack/core/models/network.py b/planetstack/core/models/network.py
index 63a4191..72e7a5f 100644
--- a/planetstack/core/models/network.py
+++ b/planetstack/core/models/network.py
@@ -1,7 +1,7 @@
 import os
 import socket
 from django.db import models
-from core.models import PlCoreBase, Site, Slice, Sliver, Deployment
+from core.models import PlCoreBase, Site, Slice, Sliver
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes import generic
 
@@ -26,8 +26,6 @@
 class Network(PlCoreBase):
     name = models.CharField(max_length=32)
     template = models.ForeignKey(NetworkTemplate)
-    deployment = models.ForeignKey(Deployment, related_name="networks", help_text="Deployment this Network belongs to")
-    site = models.ForeignKey(Site, blank=True, null=True, default=None, related_name="networks", help_text="Is this an infrastructure Network at a single Site?")
     subnet = models.CharField(max_length=32, blank=True)
     ports = models.CharField(max_length=1024, blank=True, null=True)
     labels = models.CharField(max_length=1024, blank=True, null=True)
diff --git a/planetstack/core/models/node.py b/planetstack/core/models/node.py
index 0781609..c3c2eab 100644
--- a/planetstack/core/models/node.py
+++ b/planetstack/core/models/node.py
@@ -1,8 +1,7 @@
 import os
 from django.db import models
 from core.models import PlCoreBase
-from core.models import Site
-from core.models import Deployment
+from core.models import Site,Deployment
 from core.models import Tag
 from django.contrib.contenttypes import generic
 
diff --git a/planetstack/core/models/service.py b/planetstack/core/models/service.py
index ffa3531..289c7ff 100644
--- a/planetstack/core/models/service.py
+++ b/planetstack/core/models/service.py
@@ -6,6 +6,7 @@
     enabled = models.BooleanField(default=True)
     name = models.CharField(max_length=30, help_text="Service Name")
     versionNumber = models.CharField(max_length=30, help_text="Version of Service Definition")
+    published = models.BooleanField(default=True)
 
     def __unicode__(self): return u'%s' % (self.name)
 
diff --git a/planetstack/core/models/site.py b/planetstack/core/models/site.py
index 56f9bd0..caf5afb 100644
--- a/planetstack/core/models/site.py
+++ b/planetstack/core/models/site.py
@@ -1,13 +1,15 @@
 import os
 from django.db import models
 from core.models import PlCoreBase
-from core.models import Deployment
+#from core.models import Deployment
 from core.models import Tag
 from django.contrib.contenttypes import generic
 from geoposition.fields import GeopositionField
 
 class Site(PlCoreBase):
-
+    """
+        A logical grouping of Nodes that are co-located at the same geographic location, which also typically corresponds to the Nodes' location in the physical network.
+    """
     tenant_id = models.CharField(null=True, blank=True, max_length=200, help_text="Keystone tenant id")
     name = models.CharField(max_length=200, help_text="Name for this Site")
     site_url = models.URLField(null=True, blank=True, max_length=512, help_text="Site's Home URL Page")
@@ -19,16 +21,16 @@
     is_public = models.BooleanField(default=True, help_text="Indicates the visibility of this site to other members")
     abbreviated_name = models.CharField(max_length=80)
 
-    deployments = models.ManyToManyField(Deployment, blank=True, related_name='sites')
+    deployments = models.ManyToManyField('Deployment', blank=True)
+    #deployments = models.ManyToManyField('Deployment', through='SiteDeployments', blank=True)
     tags = generic.GenericRelation(Tag)
 
     def __unicode__(self):  return u'%s' % (self.name)
 
 class SiteRole(PlCoreBase):
 
-    ROLE_CHOICES = (('admin','Admin'),('pi','PI'),('tech','Tech'),('billing','Billing'), ('user', 'User'))
+    ROLE_CHOICES = (('admin','Admin'),('pi','PI'),('tech','Tech'),('billing','Billing'))
     role = models.CharField(choices=ROLE_CHOICES, unique=True, max_length=30)
-    krole_id = models.CharField(max_length=80, verbose_name="Keystone role id", null=True, blank=True)
 
     def __unicode__(self):  return u'%s' % (self.role)
 
@@ -46,4 +48,33 @@
     def delete(self, *args, **kwds):
         super(SitePrivilege, self).delete(*args, **kwds)
 
+class Deployment(PlCoreBase):
+    name = models.CharField(max_length=200, unique=True, help_text="Name of the Deployment")
+    #sites = models.ManyToManyField('Site', through='SiteDeployments', blank=True)
+
+    def __unicode__(self):  return u'%s' % (self.name)
+
+
+class DeploymentRole(PlCoreBase):
+
+    ROLE_CHOICES = (('admin','Admin'),)
+    role = models.CharField(choices=ROLE_CHOICES, unique=True, max_length=30)
+
+    def __unicode__(self):  return u'%s' % (self.role)
+
+class DeploymentPrivilege(PlCoreBase):
+
+    user = models.ForeignKey('User', related_name='deployment_privileges')
+    deployment = models.ForeignKey('Deployment', related_name='deployment_privileges')
+    role = models.ForeignKey('DeploymentRole')
+
+    def __unicode__(self):  return u'%s %s %s' % (self.deployment, self.user, self.role)
+
+class SiteDeployments(PlCoreBase):
+    site = models.ForeignKey(Site)
+    deployment = models.ForeignKey(Deployment)
+
+    class Meta:
+        db_table = 'site_deployments'
+        #auto_created = Site
 
diff --git a/planetstack/core/models/slice.py b/planetstack/core/models/slice.py
index 3d18b24..1fa342a 100644
--- a/planetstack/core/models/slice.py
+++ b/planetstack/core/models/slice.py
@@ -43,10 +43,9 @@
         super(Slice, self).save(*args, **kwds)
 
 class SliceRole(PlCoreBase):
-    ROLE_CHOICES = (('admin','Admin'),('default','Default'), ('user', 'User'), ('pi', 'PI'))
+    ROLE_CHOICES = (('admin','Admin'),('default','Default'))
 
     role = models.CharField(choices=ROLE_CHOICES, unique=True, max_length=30)
-    krole_id = models.CharField(max_length=80, verbose_name="Keystone role id", null=True, blank=True)
 
     def __unicode__(self):  return u'%s' % (self.role)
 
diff --git a/planetstack/core/models/user.py b/planetstack/core/models/user.py
index 32f2078..a3b82d8 100644
--- a/planetstack/core/models/user.py
+++ b/planetstack/core/models/user.py
@@ -6,7 +6,6 @@
 from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
 from timezones.fields import TimeZoneField
 
-
 # Create your models here.
 class UserManager(BaseUserManager):
     def create_user(self, email, firstname, lastname, password=None):
@@ -70,6 +69,7 @@
     is_active = models.BooleanField(default=True)
     is_admin = models.BooleanField(default=True)
     is_staff = models.BooleanField(default=True)
+    is_readonly = models.BooleanField(default=False)
 
     created = models.DateTimeField(auto_now_add=True)
     updated = models.DateTimeField(auto_now=True)
@@ -82,6 +82,9 @@
     USERNAME_FIELD = 'email'
     REQUIRED_FIELDS = ['firstname', 'lastname']
 
+    def isReadOnlyUser(self):
+        return self.is_readonly
+
     def get_full_name(self):
         # The user is identified by their email address
         return self.email
