diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py
index 2dbf2c4..853e5ce 100644
--- a/planetstack/core/admin.py
+++ b/planetstack/core/admin.py
@@ -394,6 +394,19 @@
 
 class PlanetStackBaseAdmin(ReadOnlyAwareAdmin):
     save_on_top = False
+    
+    def save_model(self, request, obj, form, change):
+        # update openstack connection to use this site/tenant
+        obj.save_by_user(request.user)
+
+    def delete_model(self, request, obj):
+        obj.delete_by_user(request.user)
+
+    def save_formset(self, request, form, formset, change):
+        instances = formset.save(commit=False)
+        for instance in instances:
+            instance.save_by_user(request.user)
+        formset.save_m2m()
 
 class SliceRoleAdmin(PlanetStackBaseAdmin):
     model = SliceRole
@@ -532,6 +545,13 @@
     accountLink.allow_tags = True
     accountLink.short_description = "Billing"
 
+    def save_model(self, request, obj, form, change):
+        # update openstack connection to use this site/tenant
+        obj.save_by_user(request.user) 
+
+    def delete_model(self, request, obj):
+        obj.delete_by_user(request.user)
+        
 
 class SitePrivilegeAdmin(PlanetStackBaseAdmin):
     fieldList = ['user', 'site', 'role']
diff --git a/planetstack/core/models/deployment.py b/planetstack/core/models/deployment.py
index ea77dea..b97432b 100644
--- a/planetstack/core/models/deployment.py
+++ b/planetstack/core/models/deployment.py
@@ -44,10 +44,6 @@
                 return True
         return False
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.can_update(user):
-            super(DeploymentPrivilege, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
diff --git a/planetstack/core/models/network.py b/planetstack/core/models/network.py
index 7b9364c..23ef6ea 100644
--- a/planetstack/core/models/network.py
+++ b/planetstack/core/models/network.py
@@ -53,10 +53,6 @@
     def can_update(self, user):
         return self.slice.can_update(user)
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.slice.can_update(user):
-            super(Network, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
@@ -89,10 +85,6 @@
     def can_update(self, user):
         return self.slice.can_update(user)
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.slice.can_update(user):
-            super(NetworkSlice, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
@@ -128,10 +120,6 @@
     def can_update(self, user):
         return self.sliver.can_update(user)
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.sliver.can_update(user):
-            super(NetworkSliver, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
diff --git a/planetstack/core/models/plcorebase.py b/planetstack/core/models/plcorebase.py
index 9838d7f..8c5bddc 100644
--- a/planetstack/core/models/plcorebase.py
+++ b/planetstack/core/models/plcorebase.py
@@ -70,6 +70,10 @@
         if self.can_update(user):
             self.save(*args, **kwds)
 
+    def delete_by_user(self, user, *args, **kwds):
+        if self.can_update(user):
+            self.delete(*args, **kwds)
+
     @property
     def _dict(self):
         return model_to_dict(self, fields=[field.name for field in
diff --git a/planetstack/core/models/reservation.py b/planetstack/core/models/reservation.py
index e89b4c8..db3769f 100644
--- a/planetstack/core/models/reservation.py
+++ b/planetstack/core/models/reservation.py
@@ -22,10 +22,6 @@
     def can_update(self, user):
         return self.slice.can_update(user)
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.can_update(user):
-            super(Reservation, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
@@ -49,10 +45,6 @@
     def can_update(self, user):
         return self.sliver.slice.can_update(user)
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.can_update(user):
-            super(ReservedResource, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
diff --git a/planetstack/core/models/site.py b/planetstack/core/models/site.py
index 8e77404..34699d8 100644
--- a/planetstack/core/models/site.py
+++ b/planetstack/core/models/site.py
@@ -36,10 +36,6 @@
                 return True
         return False 
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.can_update(user):
-            super(Site, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
@@ -81,10 +77,6 @@
                 return True
         return False 
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.can_update(user):
-            super(SitePrivilege, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
@@ -127,10 +119,6 @@
                 return True
         return False
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.can_update(user):
-            super(DeploymentPrivilege, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
diff --git a/planetstack/core/models/slice.py b/planetstack/core/models/slice.py
index 533165f..823b1d1 100644
--- a/planetstack/core/models/slice.py
+++ b/planetstack/core/models/slice.py
@@ -53,11 +53,6 @@
                 return True
         return False
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.can_update(user):
-            super(Slice, self).save(*args, **kwds)
-
-    
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
@@ -90,10 +85,6 @@
                 return True
         return False
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.can_update(user):
-            super(SlicePrivilege, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
diff --git a/planetstack/core/models/slicetag.py b/planetstack/core/models/slicetag.py
index e815721..ea1d026 100644
--- a/planetstack/core/models/slicetag.py
+++ b/planetstack/core/models/slicetag.py
@@ -13,10 +13,6 @@
     def can_update(self, user):
         return self.slice.can_update(user)
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.can_update(user):
-            super(SliceTag, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
diff --git a/planetstack/core/models/sliver.py b/planetstack/core/models/sliver.py
index 1c4a134..29ae0d4 100644
--- a/planetstack/core/models/sliver.py
+++ b/planetstack/core/models/sliver.py
@@ -47,10 +47,6 @@
     def can_update(self, user):
         return self.slice.can_update(user)
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.slice.can_update(user):
-            super(Sliver, self).save(*args, **kwds)  
-
     @staticmethod
     def select_by_user(user):
         if user.is_admin:
diff --git a/planetstack/core/models/tag.py b/planetstack/core/models/tag.py
index ef746da..7818c32 100644
--- a/planetstack/core/models/tag.py
+++ b/planetstack/core/models/tag.py
@@ -28,10 +28,6 @@
             return True
         return False
 
-    def save_by_user(self, user, *args, **kwds):
-        if self.can_update(user):
-            super(Tag, self).save(*args, **kwds)
-
     @staticmethod
     def select_by_user(user):
         return Tag.objects.all()
