diff --git a/xos/models.py b/xos/models.py
index 4d1c0b3..64d7374 100644
--- a/xos/models.py
+++ b/xos/models.py
@@ -30,25 +30,25 @@
 
 class VMMEService(VMMEService_decl):
    class Meta:
-        proxy = True 
+        proxy = True
 
    def create_tenant(self, **kwargs):
-       t = VMMETenant(kind="vEPC", provider_service=self, connect_method="na", **kwargs)
+       t = VMMETenant(kind="vEPC", owner=self, connect_method="na", **kwargs)
        t.save()
        return t
 
 class VMMEVendor(VMMEVendor_decl):
    class Meta:
-        proxy = True 
+        proxy = True
 
 class VMMETenant(VMMETenant_decl):
    class Meta:
-        proxy = True 
+        proxy = True
 
    def __init__(self, *args, **kwargs):
        vmmeservices = VMMEService.get_service_objects().all()
        if vmmeservices:
-           self._meta.get_field("provider_service").default = vmmeservices[0].id
+           self._meta.get_field("owner").default = vmmeservices[0].id
        super(VMMETenant, self).__init__(*args, **kwargs)
 
    @property
@@ -56,7 +56,7 @@
        if not self.vmme_vendor:
            return super(VMMETenant, self).image
        return self.vmme_vendor.image
-   
+
    def save_instance(self, instance):
        if self.vmme_vendor:
            instance.flavor = self.vmme_vendor.flavor
diff --git a/xos/synchronizer/steps/sync_vmmetenant.py b/xos/synchronizer/steps/sync_vmmetenant.py
index b8a704f..2a0c617 100644
--- a/xos/synchronizer/steps/sync_vmmetenant.py
+++ b/xos/synchronizer/steps/sync_vmmetenant.py
@@ -37,14 +37,4 @@
     def __init__(self, *args, **kwargs):
         super(SyncVMMETenant, self).__init__(*args, **kwargs)
 
-    def fetch_pending(self, deleted):
-
-        if (not deleted):
-            objs = VMMETenant.get_tenant_objects().filter(
-                Q(enacted__lt=F('updated')) | Q(enacted=None), Q(lazy_blocked=False))
-        else:
-            # If this is a deletion we get all of the deleted tenants..
-            objs = VMMETenant.get_deleted_tenant_objects()
-
-        return objs
 
