diff --git a/planetstack/openstack_observer/deleters/__init__.py b/planetstack/openstack_observer/deleters/__init__.py
deleted file mode 100755
index 9cfd951..0000000
--- a/planetstack/openstack_observer/deleters/__init__.py
+++ /dev/null
@@ -1,18 +0,0 @@
-import os
-
-deleters = {}
-_path = os.path.join('.',os.path.dirname(__file__))
-
-_files = os.listdir(_path)
-_files = filter(lambda x:x.endswith('deleter.py'),_files)
-_files = map(lambda x:x.rstrip('.py'),_files)
-
-"""
-for f in _files:
-	m = __import__(f)
-	deleter = getattr(m,f.title().replace('_',''))
-	try:
-		deleters[deleter.model].append(deleter)
-	except KeyError:
-		deleters[deleter.model]=[deleter]
-"""
diff --git a/planetstack/openstack_observer/deleters/network_deleter.py b/planetstack/openstack_observer/deleters/network_deleter.py
deleted file mode 100644
index 0d21fda..0000000
--- a/planetstack/openstack_observer/deleters/network_deleter.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from core.models import Network, NetworkDeployments
-from observer.deleter import Deleter
-from observer.deleters.network_deployment_deleter import NetworkDeploymentDeleter
-from util.logger import Logger, logging
-
-logger = Logger(level=logging.INFO)
-
-class NetworkDeleter(Deleter):
-    model='Network'
-
-    def call(self, pk):
-        network = Network.objects.get(pk=pk) 
-        network_deployment_deleter = NetworkDeploymentDeleter()
-        for network_deployment in NetworkDeployments.objects.filter(network=network):
-            try:
-                network_deployment_deleter(network_deployment.id)    
-            except:
-                logger.log_exc("Failed to delte network deployment %s" % network_deployment)
-        network.delete()
diff --git a/planetstack/openstack_observer/deleters/network_deployment_deleter.py b/planetstack/openstack_observer/deleters/network_deployment_deleter.py
deleted file mode 100644
index 72b10b2..0000000
--- a/planetstack/openstack_observer/deleters/network_deployment_deleter.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from core.models import Network, NetworkDeployments
-from observer.deleter import Deleter
-from openstack.driver import OpenStackDriver
-
-class NetworkDeploymentDeleter(Deleter):
-    model='NetworkDeployment'
-
-    def call(self, pk):
-        network_deployment = NetworkDeployments.objects.get(pk=pk)
-        driver = OpenStackDriver().client_driver(caller=network_deployment.network.owner.creator,
-                                                 tenant=network_deployment.network.owner.name,
-                                                 deployment=network_deployment.deployment.name)
-        if (network_deployment.router_id) and (network_deployment.subnet_id):
-            driver.delete_router_interface(network_deployment.router_id, network_deployment.subnet_id)
-        if network_deployment.subnet_id:
-            driver.delete_subnet(network_deployment.subnet_id)
-        if network_deployment.router_id:
-            driver.delete_router(network_deployment.router_id)
-        if network_deployment.net_id:
-            driver.delete_network(network_deployment.net_id)
-        network_deployment.delete()
diff --git a/planetstack/openstack_observer/deleters/network_sliver_deleter.py b/planetstack/openstack_observer/deleters/network_sliver_deleter.py
deleted file mode 100644
index 71ba040..0000000
--- a/planetstack/openstack_observer/deleters/network_sliver_deleter.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from core.models import NetworkSliver
-from observer.deleter import Deleter
-
-class NetworkSliverDeleter(Deleter):
-    model='NetworkSliver'
-
-    def call(self, pk):
-        network_sliver = NetworkSlivers.objects.get(pk=pk)
-        # handle openstack delete
-
-        network_sliver.delete() 
-
-    
diff --git a/planetstack/openstack_observer/deleters/site_deleter.py b/planetstack/openstack_observer/deleters/site_deleter.py
deleted file mode 100644
index c97dee1..0000000
--- a/planetstack/openstack_observer/deleters/site_deleter.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from core.models import Site, SiteDeployments
-from observer.deleter import Deleter
-from observer.deleters.site_deployment_deleter import SiteDeploymentDeleter
-
-class SiteDeleter(Deleter):
-    model='Site'
-    
-    def call(self, pk):
-        site = Site.objects.get(pk=pk)
-        site_deployments = SiteDeployments.objects.filter(site=site)
-        site_deployment_deleter = SiteDeploymentDeleter()
-        for site_deployment in site_deployments:
-            site_deployment_deleter(site_deployment.id)
-        site.delete() 
diff --git a/planetstack/openstack_observer/deleters/site_deployment_deleter.py b/planetstack/openstack_observer/deleters/site_deployment_deleter.py
deleted file mode 100644
index fa97be2..0000000
--- a/planetstack/openstack_observer/deleters/site_deployment_deleter.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from core.models import Site, SiteDeployments
-from observer.deleter import Deleter
-
-class SiteDeploymentDeleter(Deleter):
-    model='SiteDeployments'
-
-    def call(self, pk):
-        site_deployment = SiteDeployments.objects.get(pk=pk)
-        if site_deployment.tenant_id:
-            driver = self.driver.admin_driver(deployment=site_deployment.deployment.name)
-            driver.delete_tenant(site_deployment.tenant_id)
-        site_deployment.delete()
diff --git a/planetstack/openstack_observer/deleters/slice_deleter.py b/planetstack/openstack_observer/deleters/slice_deleter.py
deleted file mode 100644
index 90b58c3..0000000
--- a/planetstack/openstack_observer/deleters/slice_deleter.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from core.models import Slice, SliceDeployments, User
-from observer.deleter import Deleter
-from observer.deleters.slice_deployment_deleter import SliceDeploymentDeleter
-from util.logger import Logger, logging
-
-logger = Logger(level=logging.INFO)
-
-class SliceDeleter(Deleter):
-    model='Slice'
-
-    def call(self, pk):
-        slice = Slice.objects.get(pk=pk)
-        slice_deployment_deleter = SliceDeploymentDeleter()
-        for slice_deployment in SliceDeployments.objects.filter(slice=slice):
-            try:
-                slice_deployment_deleter(slice_deployment.id)
-            except:
-                logger.log_exc("Failed to delete slice_deployment %s" % slice_deployment) 
-        slice.delete()
diff --git a/planetstack/openstack_observer/deleters/slice_deleter.pyc b/planetstack/openstack_observer/deleters/slice_deleter.pyc
deleted file mode 100644
index 9fc8022..0000000
--- a/planetstack/openstack_observer/deleters/slice_deleter.pyc
+++ /dev/null
Binary files differ
diff --git a/planetstack/openstack_observer/deleters/slice_deployment_deleter.py b/planetstack/openstack_observer/deleters/slice_deployment_deleter.py
deleted file mode 100644
index 33e0836..0000000
--- a/planetstack/openstack_observer/deleters/slice_deployment_deleter.py
+++ /dev/null
@@ -1,34 +0,0 @@
-from core.models import Slice, SliceDeployments, User
-from observer.deleter import Deleter
-from openstack.driver import OpenStackDriver
-
-class SliceDeploymentDeleter(Deleter):
-    model='SliceDeployments'
-
-    def call(self, pk):
-        slice_deployment = SliceDeployments.objects.get(pk=pk)
-        user = User.objects.get(id=slice_deployment.slice.creator.id)
-        driver = OpenStackDriver().admin_driver(deployment=slice_deployment.deployment.name)
-        client_driver = driver.client_driver(caller=user,
-                                             tenant=slice_deployment.slice.name,
-                                             deployment=slice_deployment.deployment.name)
-
-        if slice_deployment.router_id and slice_deployment.subnet_id:
-            client_driver.delete_router_interface(slice_deployment.router_id, slice_deployment.subnet_id)
-        if slice_deployment.subnet_id:
-            client_driver.delete_subnet(slice_deployment.subnet_id)
-        if slice_deployment.router_id:    
-            client_driver.delete_router(slice_deployment.router_id)
-        if slice_deployment.network_id:
-            client_driver.delete_network(slice_deployment.network_id)
-        if slice_deployment.tenant_id:
-            driver.delete_tenant(slice_deployment.tenant_id)
-        # delete external route
-        #subnet = None
-        #subnets = client_driver.shell.quantum.list_subnets()['subnets']
-        #for snet in subnets:
-        #    if snet['id'] == slice_deployment.subnet_id:
-        #        subnet = snet
-        #if subnet:
-        #    driver.delete_external_route(subnet)
-        slice_deployment.delete()
diff --git a/planetstack/openstack_observer/deleters/sliver_deleter.py b/planetstack/openstack_observer/deleters/sliver_deleter.py
deleted file mode 100644
index 097f0f7..0000000
--- a/planetstack/openstack_observer/deleters/sliver_deleter.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from core.models import Sliver, SliceDeployments
-from observer.deleter import Deleter
-
-class SliverDeleter(Deleter):
-    model='Sliver'
-
-    def call(self, pk):
-        sliver = Sliver.objects.get(pk=pk)
-        if sliver.instance_id:
-            driver = self.driver.client_driver(caller=sliver.creator, 
-                                               tenant=sliver.slice.name,
-                                               deployment=sliver.deploymentNetwork.name)
-            driver.destroy_instance(sliver.instance_id)
-        sliver.delete()
diff --git a/planetstack/openstack_observer/deleters/user_deleter.py b/planetstack/openstack_observer/deleters/user_deleter.py
deleted file mode 100644
index 3573f8d..0000000
--- a/planetstack/openstack_observer/deleters/user_deleter.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from core.models import User, UserDeployments
-from observer.deleter import Deleter
-from observer.deleters.user_deployment_deleter import UserDeploymentDeleter
-
-class UserDeleter(Deleter):
-    model='User'
-
-    def call(self, pk):
-        user = User.objects.get(pk=pk)
-        user_deployment_deleter = UserDeploymentDeleter()
-        for user_deployment in UserDeployments.objects.filter(user=user):
-            user_deployment_deleter(user_deployment.id)
-        user.delete()
diff --git a/planetstack/openstack_observer/deleters/user_deployment_deleter.py b/planetstack/openstack_observer/deleters/user_deployment_deleter.py
deleted file mode 100644
index 49d349b..0000000
--- a/planetstack/openstack_observer/deleters/user_deployment_deleter.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from core.models import User, UserDeployments
-from observer.deleter import Deleter
-
-class UserDeploymentDeleter(Deleter):
-    model='UserDeployment'
-
-    def call(self, pk):
-        user_deployment = UserDeployments.objects.get(pk=pk)
-        if user_deployment.user.kuser_id:
-            driver = self.driver.admin_driver(deployment=user_deployment.deployment.name)
-            driver.delete_user(user_deployment.user.kuser_id)
-        user_deployment.delete()
