diff --git a/xos/attic/header.py b/xos/attic/header.py
new file mode 100644
index 0000000..deadcaf
--- /dev/null
+++ b/xos/attic/header.py
@@ -0,0 +1,13 @@
+from django.db import models
+from core.models import Service, PlCoreBase, Slice, Instance, Tenant, TenantWithContainer, Node, Image, User, Flavor
+from core.models.plcorebase import StrippedCharField
+import os
+from django.db import models, transaction
+from django.forms.models import model_to_dict
+from django.db.models import *
+from operator import itemgetter, attrgetter, methodcaller
+import traceback
+from xos.exceptions import *
+from core.models import SlicePrivilege, SitePrivilege
+from sets import Set
+
diff --git a/xos/attic/onosapp_model.py b/xos/attic/onosapp_model.py
new file mode 100644
index 0000000..5366952
--- /dev/null
+++ b/xos/attic/onosapp_model.py
@@ -0,0 +1,17 @@
+def __init__(self, *args, **kwargs):
+    onos_services = ONOSService.get_service_objects().all()
+    if onos_services:
+        self._meta.get_field("provider_service").default = onos_services[0].id
+    super(ONOSApp, self).__init__(*args, **kwargs)
+
+def save(self, *args, **kwargs):
+    if not self.creator:
+        if not getattr(self, "caller", None):
+            # caller must be set when creating a vCPE since it creates a slice
+            raise XOSProgrammingError("ONOSApp's self.caller was not set")
+        self.creator = self.caller
+        if not self.creator:
+            raise XOSProgrammingError("ONOSApp's self.creator was not set")
+
+    super(ONOSApp, self).save(*args, **kwargs)
+
diff --git a/xos/header.py b/xos/header.py
new file mode 120000
index 0000000..721b5c0
--- /dev/null
+++ b/xos/header.py
@@ -0,0 +1 @@
+attic/header.py
\ No newline at end of file
diff --git a/xos/models.py b/xos/models.py
index abec34a..085dbf9 100644
--- a/xos/models.py
+++ b/xos/models.py
@@ -1,59 +1,79 @@
-from django.db import models
-from core.models import Service, PlCoreBase, Slice, Instance, Tenant, TenantWithContainer, Node, Image, User, Flavor
-from core.models.plcorebase import StrippedCharField
-import os
-from django.db import models, transaction
-from django.forms.models import model_to_dict
-from django.db.models import Q
-from operator import itemgetter, attrgetter, methodcaller
-import traceback
-from xos.exceptions import *
-from core.models import SlicePrivilege, SitePrivilege
-from sets import Set
+from header import *
 
-ONOS_KIND = "onos"
+
+
+from core.models import User#from core.models.tenant import Tenant
+from core.models import Tenant
+
+
+
+#from core.models.service import Service
+from core.models import Service
+
+
+
+
+
+class ONOSApp(Tenant):
+
+  KIND = "onos"
+
+  class Meta:
+      app_label = "onos"
+      name = "onos"
+      verbose_name = "ONOS Service"
+
+  # Primitive Fields (Not Relations)
+  install_dependencies = TextField( blank = True, null = True, db_index = False )
+  dependencies = TextField( blank = True, null = True, db_index = False )
+  
+
+  # Relations
+  
+  creator = ForeignKey(User, db_index = True, related_name = 'onos_apps', null = True, blank = True )
+
+  def __init__(self, *args, **kwargs):
+      onos_services = ONOSService.get_service_objects().all()
+      if onos_services:
+          self._meta.get_field("provider_service").default = onos_services[0].id
+      super(ONOSApp, self).__init__(*args, **kwargs)
+  
+  def save(self, *args, **kwargs):
+      if not self.creator:
+          if not getattr(self, "caller", None):
+              # caller must be set when creating a vCPE since it creates a slice
+              raise XOSProgrammingError("ONOSApp's self.caller was not set")
+          self.creator = self.caller
+          if not self.creator:
+              raise XOSProgrammingError("ONOSApp's self.creator was not set")
+  
+      super(ONOSApp, self).save(*args, **kwargs)
+  
+  pass
+
+
+
 
 class ONOSService(Service):
-    KIND = ONOS_KIND
 
-    class Meta:
-        app_label = "onos"
-        verbose_name = "ONOS Service"
+  KIND = "onos"
 
-    rest_hostname = StrippedCharField(max_length=255, null=True, blank=True)
-    rest_port = models.IntegerField(default=8181)
-    no_container = models.BooleanField(default=False)
-    node_key = StrippedCharField(max_length=1024, null=True, blank=True)
+  class Meta:
+      app_label = "onos"
+      name = "onos"
+      verbose_name = "ONOS Service"
 
-class ONOSApp(Tenant):   # aka 'ONOSTenant'
-    class Meta:
-        app_label = "onos"
+  # Primitive Fields (Not Relations)
+  rest_hostname = StrippedCharField( db_index = False, max_length = 255, null = True, blank = True )
+  rest_port = IntegerField( default = 8181, null = False, blank = False, db_index = False )
+  no_container = BooleanField( default = False, null = False, blank = True, db_index = False )
+  node_key = StrippedCharField( db_index = False, max_length = 1024, null = True, blank = True )
+  
 
-    KIND = ONOS_KIND
+  # Relations
+  
 
-    install_dependencies = models.TextField(null=True, blank=True)
-    dependencies = models.TextField(null=True, blank=True)
-
-    # why is this necessary?
-    creator = models.ForeignKey(User, related_name='onos_apps', blank=True, null=True)
-
-    def __init__(self, *args, **kwargs):
-        onos_services = ONOSService.get_service_objects().all()
-        if onos_services:
-            self._meta.get_field("provider_service").default = onos_services[0].id
-        super(ONOSApp, self).__init__(*args, **kwargs)
-
-    def save(self, *args, **kwargs):
-        if not self.creator:
-            if not getattr(self, "caller", None):
-                # caller must be set when creating a vCPE since it creates a slice
-                raise XOSProgrammingError("ONOSApp's self.caller was not set")
-            self.creator = self.caller
-            if not self.creator:
-                raise XOSProgrammingError("ONOSApp's self.creator was not set")
-
-        super(ONOSApp, self).save(*args, **kwargs)
-
-
+  
+  pass
 
 
diff --git a/xos/onos-onboard.yaml b/xos/onos-onboard.yaml
index 9c0e5c4..108f46c 100644
--- a/xos/onos-onboard.yaml
+++ b/xos/onos-onboard.yaml
@@ -13,7 +13,7 @@
           base_url: file:///opt/xos_services/onos-service/xos/
           # The following will concatenate with base_url automatically, if
           # base_url is non-null.
-          models: models.py
+          xproto: ./
           admin: admin.py
           admin_template: templates/onosadmin.html
           synchronizer: synchronizer/manifest
diff --git a/xos/onos.xproto b/xos/onos.xproto
new file mode 100644
index 0000000..24345ea
--- /dev/null
+++ b/xos/onos.xproto
@@ -0,0 +1,17 @@
+option kind="onos";
+option name="onos";
+option verbose_name="ONOS Service";
+
+message ONOSApp (Tenant){
+     optional string install_dependencies = 1 [db_index = False, null = True, blank = True];
+     optional string dependencies = 2 [db_index = False, null = True, blank = True];
+     optional manytoone creator->User:onos_apps = 3 [db_index = True, null = True, blank = True];
+}
+
+
+message ONOSService (Service){
+     optional string rest_hostname = 1 [db_index = False, max_length = 255, null = True, content_type = "stripped", blank = True];
+     required int32 rest_port = 2 [default = 8181, null = False, db_index = False, blank = False];
+     required bool no_container = 3 [default = False, null = False, db_index = False, blank = True];
+     optional string node_key = 4 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+}
