diff --git a/xos/synchronizer/steps/sync_configmap.py b/xos/synchronizer/steps/sync_configmap.py
index ea5c8e2..7cf373b 100644
--- a/xos/synchronizer/steps/sync_configmap.py
+++ b/xos/synchronizer/steps/sync_configmap.py
@@ -80,7 +80,15 @@
                 o.backend_handle = config_map.metadata.self_link
                 o.save(update_fields=["backend_handle"])
 
-    def delete_record(self, port):
-        # TODO(smbaker): Implement delete step
-        pass
+    def delete_record(self, o):
+        config_map = self.get_config_map(o)
+        if not config_map:
+            log.info("Kubernetes config map does not exist; Nothing to delete.", o=o)
+            return
+        delete_options = self.kubernetes_client.V1DeleteOptions()
+        self.v1core.delete_namespaced_config_map(o.name, o.trust_domain.name, delete_options)
+        log.info("Deleted configmap from kubernetes", handle=o.backend_handle)
+
+
+
 
diff --git a/xos/synchronizer/steps/sync_kubernetesserviceinstance.py b/xos/synchronizer/steps/sync_kubernetesserviceinstance.py
index 4f1088a..21657b6 100644
--- a/xos/synchronizer/steps/sync_kubernetesserviceinstance.py
+++ b/xos/synchronizer/steps/sync_kubernetesserviceinstance.py
@@ -147,7 +147,13 @@
                 o.backend_handle = pod.metadata.self_link
                 o.save(update_fields=["backend_handle"])
 
-    def delete_record(self, port):
-        # TODO(smbaker): Implement delete step
-        pass
+    def delete_record(self, o):
+        secret = self.get_pod(o)
+        if not secret:
+            log.info("Kubernetes pod does not exist; Nothing to delete.", o=o)
+            return
+        delete_options = self.kubernetes_client.V1DeleteOptions()
+        self.v1core.delete_namespaced_pod(o.name, o.slice.trust_domain.name, delete_options)
+        log.info("Deleted pod from kubernetes", handle=o.backend_handle)
+
 
diff --git a/xos/synchronizer/steps/sync_principal.py b/xos/synchronizer/steps/sync_principal.py
index 3806888..ff38f4f 100644
--- a/xos/synchronizer/steps/sync_principal.py
+++ b/xos/synchronizer/steps/sync_principal.py
@@ -92,7 +92,11 @@
                 o.backend_handle = service_account.metadata.self_link
                 o.save(update_fields=["backend_handle"])
 
-    def delete_record(self, port):
-        # TODO(smbaker): Implement delete step
-        pass
-
+    def delete_record(self, o):
+        principal = self.get_service_account(o)
+        if not principal:
+            log.info("Kubernetes service account does not exist; Nothing to delete.", o=o)
+            return
+        delete_options = self.kubernetes_client.V1DeleteOptions()
+        self.v1core.delete_namespaced_service_account(o.name, o.trust_domain.name, delete_options)
+        log.info("Deleted Principal from kubernetes", handle=o.backend_handle)
diff --git a/xos/synchronizer/steps/sync_secret.py b/xos/synchronizer/steps/sync_secret.py
index a020b43..573a571 100644
--- a/xos/synchronizer/steps/sync_secret.py
+++ b/xos/synchronizer/steps/sync_secret.py
@@ -80,7 +80,11 @@
                 o.backend_handle = secret.metadata.self_link
                 o.save(update_fields=["backend_handle"])
 
-    def delete_record(self, port):
-        # TODO(smbaker): Implement delete step
-        pass
-
+    def delete_record(self, o):
+        secret = self.get_secret(o)
+        if not secret:
+            log.info("Kubernetes secret does not exist; Nothing to delete.", o=o)
+            return
+        delete_options = self.kubernetes_client.V1DeleteOptions()
+        self.v1core.delete_namespaced_secret(o.name, o.trust_domain.name, delete_options)
+        log.info("Deleted secret from kubernetes", handle=o.backend_handle)
diff --git a/xos/synchronizer/steps/sync_service.py b/xos/synchronizer/steps/sync_service.py
index 2fe88f4..500f0d9 100644
--- a/xos/synchronizer/steps/sync_service.py
+++ b/xos/synchronizer/steps/sync_service.py
@@ -94,12 +94,12 @@
 
         return trust_domain
 
-    def get_service(self, o, trust_domain):
+    def get_service(self, o, trust_domain_name):
         """ Given an XOS Service, read the associated Service from Kubernetes.
             If no Kubernetes service exists, return None
         """
         try:
-            k8s_service = self.v1core.read_namespaced_service(o.name, trust_domain.name)
+            k8s_service = self.v1core.read_namespaced_service(o.name, trust_domain_name)
         except self.ApiException, e:
             if e.status == 404:
                 return None
@@ -108,7 +108,7 @@
 
     def sync_record(self, o):
         trust_domain = self.get_trust_domain(o)
-        k8s_service = self.get_service(o,trust_domain)
+        k8s_service = self.get_service(o,trust_domain.name)
 
         if not k8s_service:
             k8s_service = self.kubernetes_client.V1Service()
@@ -133,6 +133,25 @@
             o.save(update_fields=["backend_handle"])
 
     def delete_record(self, o):
-        # TODO(smbaker): Implement delete step
-        pass
+        trust_domain_name = None
+        trust_domain = self.get_trust_domain(o)
+        if trust_domain:
+            trust_domain_name = trust_domain.name
+        else:
+            # rely on backend_handle being structured like this one,
+            #     /api/v1/namespaces/service1-trust/services/service1
+            if (o.backend_handle):
+                parts = o.backend_handle.split("/")
+                if len(parts)>3:
+                    trust_domain_name = parts[-3]
 
+        if not trust_domain_name:
+            raise Exception("Can't delete service %s because there is no trust domain" % o.name)
+
+        k8s_service = self.get_service(o, trust_domain_name)
+        if not k8s_service:
+            log.info("Kubernetes service does not exist; Nothing to delete.", o=o)
+            return
+        delete_options = self.kubernetes_client.V1DeleteOptions()
+        self.v1core.delete_namespaced_service(o.name, trust_domain_name, delete_options)
+        log.info("Deleted service from kubernetes", handle=o.backend_handle)
diff --git a/xos/synchronizer/steps/sync_trustdomain.py b/xos/synchronizer/steps/sync_trustdomain.py
index 90b6afd..5a326fa 100644
--- a/xos/synchronizer/steps/sync_trustdomain.py
+++ b/xos/synchronizer/steps/sync_trustdomain.py
@@ -88,7 +88,12 @@
                 o.backend_handle = ns.metadata.self_link
                 o.save(update_fields=["backend_handle"])
 
-    def delete_record(self, port):
-        # TODO(smbaker): Implement delete step
-        pass
+    def delete_record(self, o):
+        namespace = self.get_namespace(o)
+        if not namespace:
+            log.info("Kubernetes trust domain does not exist; Nothing to delete.", o=o)
+            return
+        delete_options = self.kubernetes_client.V1DeleteOptions()
+        self.v1core.delete_namespace(o.name, delete_options)
+        log.info("Deleted trust domain from kubernetes", handle=o.backend_handle)
 
