diff --git a/xos/tosca/resources/VPGWCComponent.py b/xos/tosca/resources/VPGWCComponent.py
index cbea988..e4eefa0 100644
--- a/xos/tosca/resources/VPGWCComponent.py
+++ b/xos/tosca/resources/VPGWCComponent.py
@@ -6,7 +6,7 @@
 from translator.toscalib.tosca_template import ToscaTemplate
 import pdb
 
-from services.vpgwc.models import VPGWCComponent, MCORDService
+from services.vpgwc.models import VPGWCComponent, VPGWCService
 
 from xosresource import XOSResource
 
@@ -21,7 +21,7 @@
 
         provider_name = self.get_requirement("tosca.relationships.MemberOfService", throw_exception=throw_exception)
         if provider_name:
-            args["provider_service"] = self.get_xos_object(MCORDService, throw_exception=throw_exception, name=provider_name)
+            args["provider_service"] = self.get_xos_object(VPGWCService, throw_exception=throw_exception, name=provider_name)
 
         return args
 
diff --git a/xos/tosca/resources/vpgwccomponent.py b/xos/tosca/resources/vpgwccomponent.py
deleted file mode 100644
index cbea988..0000000
--- a/xos/tosca/resources/vpgwccomponent.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import os
-import pdb
-import sys
-import tempfile
-sys.path.append("/opt/tosca")
-from translator.toscalib.tosca_template import ToscaTemplate
-import pdb
-
-from services.vpgwc.models import VPGWCComponent, MCORDService
-
-from xosresource import XOSResource
-
-class XOSVPGWCComponent(XOSResource):
-    provides = "tosca.nodes.VPGWCComponent"
-    xos_model = VPGWCComponent
-    copyin_props = ["s5s8_pgw_tag", "display_message"]
-    name_field = None
-
-    def get_xos_args(self, throw_exception=True):
-        args = super(XOSVPGWCComponent, self).get_xos_args()
-
-        provider_name = self.get_requirement("tosca.relationships.MemberOfService", throw_exception=throw_exception)
-        if provider_name:
-            args["provider_service"] = self.get_xos_object(MCORDService, throw_exception=throw_exception, name=provider_name)
-
-        return args
-
-    def get_existing_objs(self):
-        args = self.get_xos_args(throw_exception=False)
-        provider_service = args.get("provider", None)
-        if provider_service:
-            return [ self.get_xos_object(provider_service=provider_service) ]
-        return []
-
-    def postprocess(self, obj):
-        pass
-
-    def can_delete(self, obj):
-        return super(XOSVPGWCComponent, self).can_delete(obj)
-
