diff --git a/xos/header.py b/xos/header.py
index 98c7297..2e60747 100644
--- a/xos/header.py
+++ b/xos/header.py
@@ -13,11 +13,3 @@
 from xos.config import Config
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes.fields import GenericForeignKey
-
-class ConfigurationError(Exception):
-    pass
-
-VMME_KIND = "vEPC"
-
-CORD_USE_VTN = getattr(Config(), "networking_use_vtn", False)
-
diff --git a/xos/models.py b/xos/models.py
new file mode 100644
index 0000000..9e93636
--- /dev/null
+++ b/xos/models.py
@@ -0,0 +1,40 @@
+from core.models.plcorebase import *
+from models_decl import VMMEService_decl
+from models_decl import VMMETenant_decl
+
+class VMMEService(VMMEService_decl):
+   class Meta:
+        proxy = True 
+
+class VMMETenant(VMMETenant_decl):
+   class Meta:
+        proxy = True 
+
+   def __init__(self, *args, **kwargs):
+       vmmeservice = VMMEService.get_service_objects().all()
+       if vmmeservice:
+           self._meta.get_field(
+                   "provider_service").default = vmmeservice[0].id
+       super(VMMETenant, self).__init__(*args, **kwargs)
+
+   def save(self, *args, **kwargs):
+       super(VMMETenant, self).save(*args, **kwargs)
+       # This call needs to happen so that an instance is created for this
+       # tenant is created in the slice. One instance is created per tenant.
+       model_policy_vmmetenant(self.pk)
+
+   def delete(self, *args, **kwargs):
+       # Delete the instance that was created for this tenant
+       self.cleanup_container()
+       super(VMMETenant, self).delete(*args, **kwargs)
+
+def model_policy_vmmetenant(pk):
+    # This section of code is atomic to prevent race conditions
+    with transaction.atomic():
+        # We find all of the tenants that are waiting to update
+        tenant = VMMETenant.objects.select_for_update().filter(pk=pk)
+        if not tenant:
+            return
+        # Since this code is atomic it is safe to always use the first tenant
+        tenant = tenant[0]
+        tenant.manage_container()
\ No newline at end of file
diff --git a/xos/vmme.xproto b/xos/vmme.xproto
index c06f480..e46df6e 100644
--- a/xos/vmme.xproto
+++ b/xos/vmme.xproto
@@ -2,12 +2,12 @@
 option app_label = "vmme";
 option verbose_name = "vMME Service";
 option kind = "vEPC";
+option legacy = "True";
 
 message VMMEService (Service){
     required string service_message = 1 [help_text = "Service Message to Display", max_length = 254, null = False, db_index = False, blank = False];
 }
 
-
 message VMMETenant (TenantWithContainer){
      option name = "vmmetenant";
      option verbose_name = "vMME Tenant";
