diff --git a/xos/models.py b/xos/models.py
index a2924ca..fe90502 100644
--- a/xos/models.py
+++ b/xos/models.py
@@ -1,5 +1,6 @@
 from core.models.plcorebase import *
 from models_decl import VPGWUService_decl
+from models_decl import VPGWUVendor_decl
 from models_decl import VPGWUTenant_decl
 
 from django.db import models
@@ -26,6 +27,10 @@
        t.save()
        return t
 
+class VPGWUVendor(VPGWUVendor_decl):
+   class Meta:
+       proxy = True
+
 class VPGWUTenant(VPGWUTenant_decl):
    class Meta:
         proxy = True 
@@ -39,6 +44,17 @@
                 "provider_service").default = vpgwuservice[0].id
        super(VPGWUTenant, self).__init__(*args, **kwargs)
 
+   @property
+   def image(self):
+       if not self.vpgwu_vendor:
+           return super(VPGWUTenant, self).image
+       return self.vpgwu_vendor.image
+   
+   def save_instance(self, instance):
+       if self.vpgwu_vendor:
+           instance.flavor = self.vpgwu_vendor.flavor
+       super(VPGWUTenant, self).save_instance(instance)
+
    def save(self, *args, **kwargs):
        if not self.creator:
            if not getattr(self, "caller", None):
diff --git a/xos/synchronizer/steps/sync_vpgwutenant.py b/xos/synchronizer/steps/sync_vpgwutenant.py
index b22438c..987f752 100644
--- a/xos/synchronizer/steps/sync_vpgwutenant.py
+++ b/xos/synchronizer/steps/sync_vpgwutenant.py
@@ -8,7 +8,6 @@
 sys.path.insert(0, parentdir)
 
 class SyncVPGWUTenant(SyncInstanceUsingAnsible):
-
     provides = [VPGWUTenant]
 
     observes = VPGWUTenant
@@ -23,22 +22,11 @@
         super(SyncVPGWUTenant, self).__init__(*args, **kwargs)
 
     def fetch_pending(self, deleted):
-
         if (not deleted):
             objs = VPGWUTenant.get_tenant_objects().filter(
                 Q(enacted__lt=F('updated')) | Q(enacted=None), Q(lazy_blocked=False))
         else:
-
             objs = VPGWUTenant.get_deleted_tenant_objects()
 
         return objs
 
-    def get_extra_attributes(self, o):
-        fields = {}
-        fields['display_message'] = o.display_message
-        fields['s5s8_pgw_tag'] = o.s5s8_pgw_tag
-        fields['image_name'] = o.image_name
-        return fields
-
-    def delete_record(self, port):
-        pass
diff --git a/xos/synchronizer/steps/vpgwutenant_playbook.yaml b/xos/synchronizer/steps/vpgwutenant_playbook.yaml
index 455290c..74ea6bb 100644
--- a/xos/synchronizer/steps/vpgwutenant_playbook.yaml
+++ b/xos/synchronizer/steps/vpgwutenant_playbook.yaml
@@ -3,11 +3,7 @@
   gather_facts: False
   connection: ssh
   user: ubuntu
-  become: yes
+  sudo: yes
   tasks:
+  vars:
 
-  - name: write message
-    shell: echo "{{ display_message }}" > /var/tmp/index.html
-
-  - name: setup s5s8_pgw interface config
-    shell: ./start_3gpp_int.sh eth1 {{ s5s8_pgw_tag }} {{ s5s8_pgw_ip }}/24
diff --git a/xos/tosca/custom_types/vpgwu.m4 b/xos/tosca/custom_types/vpgwu.m4
index 5e90bd6..5d04f1c 100644
--- a/xos/tosca/custom_types/vpgwu.m4
+++ b/xos/tosca/custom_types/vpgwu.m4
@@ -22,3 +22,19 @@
             CORD - The vPGWU Tenant
         properties:
             xos_base_tenant_props
+
+    tosca.nodes.VPGWUVendor:
+        derived_from: tosca.nodes.Root
+        description: >
+            VPGWU Vendor
+        capabilities:
+            xos_bas_service_caps
+        properties:
+            name:
+                type: string
+                required: true
+
+    tosca.relationships.VendorOfTenant:
+           derived_from: tosca.relationships.Root
+           valid_target_types: [ tosca.capabilities.xos.VPGWUTenant ]
+
diff --git a/xos/tosca/custom_types/vpgwu.yaml b/xos/tosca/custom_types/vpgwu.yaml
index cb4c0a9..de0b884 100644
--- a/xos/tosca/custom_types/vpgwu.yaml
+++ b/xos/tosca/custom_types/vpgwu.yaml
@@ -90,3 +90,19 @@
                 type: string
                 required: false
                 description: Service specific ID opaque to XOS but meaningful to service
+
+    tosca.nodes.VPGWUVendor:
+        derived_from: tosca.nodes.Root
+        description: >
+            VPGWU Vendor
+        capabilities:
+            xos_bas_service_caps
+        properties:
+            name:
+                type: string
+                required: true
+
+    tosca.relationships.VendorOfTenant:
+           derived_from: tosca.relationships.Root
+           valid_target_types: [ tosca.capabilities.xos.VPGWUTenant ]
+
diff --git a/xos/tosca/resources/vpgwuvendor.py b/xos/tosca/resources/vpgwuvendor.py
new file mode 100644
index 0000000..f8160b7
--- /dev/null
+++ b/xos/tosca/resources/vpgwuvendor.py
@@ -0,0 +1,32 @@
+from xosresource import XOSResource
+from core.models import Tenant
+from services.vpgwu.models import VPGWUVendor
+
+class XOSVPGWUVendor(XOSResource):
+    provides = "tosca.nodes.VPGWUVendor"
+    xos_model = VPGWUVendor
+    name_field = None
+    copyin_props = ( "name",)
+
+    def get_xos_args(self, throw_exception=True):
+        args = super(XOSVPGWUVendor, 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(Tenant, 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(XOSVPGWUVendor, self).can_delete(obj)
+
diff --git a/xos/vpgwu-onboard.yaml b/xos/vpgwu-onboard.yaml
index 69af2c5..af2f99c 100644
--- a/xos/vpgwu-onboard.yaml
+++ b/xos/vpgwu-onboard.yaml
@@ -17,7 +17,7 @@
           synchronizer: synchronizer/manifest
           synchronizer_run: vpgwu-synchronizer.py
           tosca_custom_types: tosca/custom_types/vpgwu.yaml
-          tosca_resource: tosca/resources/vpgwuservice.py, tosca/resources/vpgwutenant.py
+          tosca_resource: tosca/resources/vpgwuservice.py, tosca/resources/vpgwutenant.py, tosca/resources/vpgwuvendor.py
           private_key: file:///opt/xos/key_import/mcord_rsa
           public_key: file:///opt/xos/key_import/mcord_rsa.pub
 
diff --git a/xos/vpgwu.xproto b/xos/vpgwu.xproto
index 5c1c171..16b1f3a 100644
--- a/xos/vpgwu.xproto
+++ b/xos/vpgwu.xproto
@@ -9,7 +9,17 @@
     option verbose_name = "Virtual Packet Gateway -- User Plane Service";
 }
 
+message VPGWUVendor (PlCoreBase){
+    option name = "VPGWUVendor";
+    option verbose_name = "Virtual Packet Gateway -- User Plane Vendor";
+    required string name = 1 [help_text = "vendor name", max_length = 32, null = False, db_index = False, blank = False]; 
+    required manytoone image->Image:+ = 2 [help_text = "select image for this vendor", db_index = True, null = False, blank = False];
+    required manytoone flavor->Flavor:+ = 3 [help_text = "select openstack flavor for vendor image", db_index = True, null = False, blank = False];
+}
+
 message VPGWUTenant (TenantWithContainer) {
     option name = "VPGWUTenant";
     option verbose_name = "Virtual Packet Gateway -- User Plane Tenant";
+    optional manytoone vpgwu_vendor->VPGWUVendor:vendor_tenants = 1 [help_text = "select vendor of choice, leave blank for slice default", db_index = True, null = True, blank = True];
 }
+
