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()
