diff --git a/xos/xos_client/xosapi/convenience/vroutertenant.py b/xos/xos_client/xosapi/convenience/vroutertenant.py
index ef8a1bf..b891588 100644
--- a/xos/xos_client/xosapi/convenience/vroutertenant.py
+++ b/xos/xos_client/xosapi/convenience/vroutertenant.py
@@ -2,27 +2,6 @@
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
 class ORMWrapperVRouterTenant(ORMWrapper):
-    # hopefully this goes away when VRouterTenant is made a real object
-
-    def get_attribute(self, name, default=None):
-        if self.service_specific_attribute:
-            attributes = json.loads(self.service_specific_attribute)
-        else:
-            attributes = {}
-        return attributes.get(name, default)
-
-    @property
-    def address_pool_id(self):
-        return self.get_attribute("address_pool_id", None)
-
-    @property
-    def public_ip(self):
-        return self.get_attribute("public_ip", None)
-
-    @property
-    def public_mac(self):
-        return self.get_attribute("public_mac", None)
-
     @property
     def gateway_ip(self):
         if not self.address_pool:
@@ -50,14 +29,5 @@
                 return int(parts[1].strip())
         return None
 
-    @property
-    def address_pool(self):
-        if not self.address_pool_id:
-            return None
-        aps = self.stub.AddressPool.objects.filter(id=self.address_pool_id)
-        if not aps:
-            return None
-        ap = aps[0]
-        return ap
 
 register_convenience_wrapper("VRouterTenant", ORMWrapperVRouterTenant)
