diff --git a/xos/attic/header.py b/xos/attic/header.py
deleted file mode 100644
index d86dc29..0000000
--- a/xos/attic/header.py
+++ /dev/null
@@ -1,29 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from django.db import models
-from core.models import Service, XOSBase, Slice, Instance, ServiceInstance, Node, Image, User, Flavor
-from core.models.xosbase 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/synchronizer/models/models.py b/xos/synchronizer/models/models.py
deleted file mode 100644
index 4e7c71a..0000000
--- a/xos/synchronizer/models/models.py
+++ /dev/null
@@ -1,31 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from xos.exceptions import *
-from models_decl import *
-
-class ONOSApp(ONOSApp_decl):
-    class Meta:
-        proxy = True
-
-    def __init__(self, *args, **kwargs):
-        onos_services = ONOSService.objects.all()
-        if onos_services:
-            self._meta.get_field("owner").default = onos_services[0].id
-        super(ONOSApp, self).__init__(*args, **kwargs)
-
-class ONOSService(ONOSService_decl):
-    class Meta:
-        proxy = True
diff --git a/xos/synchronizer/models/onos.xproto b/xos/synchronizer/models/onos.xproto
index bc8a590..c5cfc56 100644
--- a/xos/synchronizer/models/onos.xproto
+++ b/xos/synchronizer/models/onos.xproto
@@ -1,10 +1,10 @@
 option kind="onos";
 option app_label = "onos";
 option name="onos";
-option legacy="True";
 
 message ONOSApp (ServiceInstance){
     option verbose_name="ONOS Application";
+    option owner_class_name="ONOSService";
 
     optional string install_dependencies = 1 [db_index = False, null = True, blank = True];
     optional string dependencies = 2 [db_index = False, null = True, blank = True];
