diff --git a/xos/sdncontroller-onboard.yaml b/xos/sdncontroller-onboard.yaml
index 93c9e8c..b5f5ae2 100644
--- a/xos/sdncontroller-onboard.yaml
+++ b/xos/sdncontroller-onboard.yaml
@@ -28,10 +28,6 @@
           # The following will concatenate with base_url automatically, if
           # base_url is non-null.
           xproto: ./
-          tosca_custom_types: sdncontroller.yaml
-          synchronizer: synchronizer/manifest
-          synchronizer_run: sdncontroller-synchronizer.py
-          tosca_resource: tosca/resources/sdncontrollerserviceinstance.py, tosca/resources/sdncontrollerservice.py, tosca/resources/sdncontrollervendor.py
           private_key: file:///opt/xos/key_import/mcord_rsa
           public_key: file:///opt/xos/key_import/mcord_rsa.pub
 
diff --git a/xos/sdncontroller.m4 b/xos/sdncontroller.m4
deleted file mode 100644
index 2a24cdb..0000000
--- a/xos/sdncontroller.m4
+++ /dev/null
@@ -1,53 +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.
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-# compile this with "m4 sdncontroller.m4 > sdncontroller.yaml"
-
-# include macros
-include(macros.m4)
-
-node_types:
-    tosca.nodes.SDNControllerService:
-        derived_from: tosca.nodes.Root
-        description: >
-            SDN Controller Service for vSPGW
-        capabilities:
-            xos_base_service_caps
-        properties:
-            xos_base_props
-            xos_base_service_props
-
-    tosca.nodes.SDNControllerServiceInstance:
-        derived_from: tosca.nodes.Root
-        description: >
-            SDN Controller Service Instance for vSPGW
-        properties:
-            xos_base_tenant_props
-
-    tosca.nodes.SDNControllerVendor:
-        derived_from: tosca.nodes.Root
-        description: >
-            SDN Controller Vendor for vSPGW
-        properties:
-            xos_base_props
-            name:
-                type: string
-                required: true
-
-    tosca.relationships.VendorOfTenant:
-           derived_from: tosca.relationships.Root
-           valid_target_types: [ tosca.capabilities.xos.SDNControllerServiceInstance ]
-
diff --git a/xos/sdncontroller.yaml b/xos/sdncontroller.yaml
deleted file mode 100644
index 6e4b184..0000000
--- a/xos/sdncontroller.yaml
+++ /dev/null
@@ -1,153 +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.
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-# compile this with "m4 sdncontroller.m4 > sdncontroller.yaml"
-
-# include macros
-
-# 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.
-
-
-# Note: Tosca derived_from isn't working the way I think it should, it's not
-#    inheriting from the parent template. Until we get that figured out, use
-#    m4 macros do our inheritance
-
-
-# Service
-
-
-# Subscriber
-
-
-
-
-# end m4 macros
-
-
-node_types:
-    tosca.nodes.SDNControllerService:
-        derived_from: tosca.nodes.Root
-        description: >
-            SDN Controller Service for vSPGW
-        capabilities:
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.
-
-    tosca.nodes.SDNControllerServiceInstance:
-        derived_from: tosca.nodes.Root
-        description: >
-            SDN Controller Service Instance for vSPGW
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of tenant
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service
-
-    tosca.nodes.SDNControllerVendor:
-        derived_from: tosca.nodes.Root
-        description: >
-            SDN Controller Vendor for vSPGW
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            name:
-                type: string
-                required: true
-
-    tosca.relationships.VendorOfTenant:
-           derived_from: tosca.relationships.Root
-           valid_target_types: [ tosca.capabilities.xos.SDNControllerServiceInstance ]
-
diff --git a/xos/tosca/resources/sdncontrollerservice.py b/xos/tosca/resources/sdncontrollerservice.py
deleted file mode 100644
index 7f4773f..0000000
--- a/xos/tosca/resources/sdncontrollerservice.py
+++ /dev/null
@@ -1,22 +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 service import XOSService
-from services.sdncontroller.models import SDNControllerService
-
-class XOSSDNControllerService(XOSService):
-	provides = "tosca.nodes.SDNControllerService"
-	xos_model = SDNControllerService
-	copyin_props = ["view_url", "icon_url", "enabled", "published", "public_key", "private_key_fn", "versionNumber"]
-
diff --git a/xos/tosca/resources/sdncontrollerserviceinstance.py b/xos/tosca/resources/sdncontrollerserviceinstance.py
deleted file mode 100644
index 39ee4dc..0000000
--- a/xos/tosca/resources/sdncontrollerserviceinstance.py
+++ /dev/null
@@ -1,46 +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 xosresource import XOSResource
-from core.models import ServiceInstance, Service
-from services.sdncontroller.models import SDNControllerServiceInstance
-
-class XOSSDNControllerServiceInstance(XOSResource):
-    provides = "tosca.nodes.SDNControllerServiceInstance"
-    xos_model = SDNControllerServiceInstance
-    name_field = None
-    copyin_props = ()
-
-    def get_xos_args(self, throw_exception=True):
-        args = super(XOSSDNControllerServiceInstance, self).get_xos_args()
-
-        provider_name = self.get_requirement("tosca.relationships.TenantOfService", throw_exception=throw_exception)
-        if provider_name:
-            args["owner"] = self.get_xos_object(Service, throw_exception=throw_exception, name=provider_name)
-
-        return args
-
-    def get_existing_objs(self):
-        args = self.get_xos_args(throw_exception=False)
-        owner = args.get("provider", None)
-        if owner:
-            return [ self.get_xos_object(owner=owner) ]
-        return []
-
-    def postprocess(self, obj):
-        pass
-
-    def can_delete(self, obj):
-        return super(XOSSDNControllerServiceInstance, self).can_delete(obj)
-
diff --git a/xos/tosca/resources/sdncontrollervendor.py b/xos/tosca/resources/sdncontrollervendor.py
deleted file mode 100644
index b1a78e5..0000000
--- a/xos/tosca/resources/sdncontrollervendor.py
+++ /dev/null
@@ -1,45 +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 xosresource import XOSResource
-from core.models import ServiceInstance
-from services.sdncontroller.models import SDNControllerVendor
-
-class XOSSDNControllerVendor(XOSResource):
-    provides = "tosca.nodes.SDNControllerVendor"
-    xos_model = SDNControllerVendor
-    name_field = None
-    copyin_props = ( "name",)
-
-    def get_xos_args(self, throw_exception=True):
-        args = super(XOSSDNControllerVendor, self).get_xos_args()
-
-        tenant_name = self.get_requirement("tosca.relationships.VendorOfTenant", throw_exception=throw_exception)
-        if tenant_name:
-            args["provider_tenant"] = self.get_xos_object(ServiceInstance, throw_exception=throw_exception, name=tenant_name)
-
-        return args
-
-    def get_existing_objs(self):
-        args = self.get_xos_args(throw_exception=False)
-        provider_tenant = args.get("provider", None)
-        if provider_tenant:
-            return [ self.get_xos_object(provider_tenant=provider_tenant) ]
-        return []
-
-    def postprocess(self, obj):
-        pass
-
-    def can_delete(self, obj):
-        return super(XOSSDNControllerVendor, self).can_delete(obj)
