diff --git a/schema/xos-core.yang b/schema/xos-core.yang
index 44a702c..1137c28 100644
--- a/schema/xos-core.yang
+++ b/schema/xos-core.yang
@@ -35,8 +35,8 @@
   }
   
   identity kind;
-  identity generic    { base kind; }
-  identity subscriber { base kind; }
+  identity generic { base kind; }
+  identity service { base kind; }
 
   typedef unique-identifier {
     description "defines valid formats for external reference id";
@@ -46,14 +46,23 @@
       type inet:uri;
     }
   }
+  typedef bandwidth {
+    type uint32 {
+      range 1000000..max; // should be at least 1 Mbps?  
+    }
+    units 'bps';
+  }
+  typedef vlan {
+    type uint16 { range 0..4095; }
+  }
 
-  grouping xos-attribute {
+  grouping attribute-pair {
     leaf name  { type string { length 0..128; } }
     leaf value { type string; }
     // don't need pointer back to service
   }
 
-  grouping xos-sync-record {
+  grouping sync-record {
     description "Synchronizer-specific properties for model records";
     
     leaf created { type yang:date-and-time; }
@@ -100,25 +109,18 @@
     }
   }
   
-  grouping xos-base {
+  grouping base-common {
     leaf id {
       type unique-identifier;
       mandatory true;
     }
-    leaf kind {
-      type identityref {
-        base kind;
-      }
-      default generic;
-    }
     leaf name {
       type string {
         length 0..255;
       }
     }
-    
     list attribute {
-      uses xos-attribute;
+      uses attribute-pair;
       key name;
       status deprecated;
       reference "XOS: service-specific-attribute";
@@ -129,15 +131,14 @@
       mandatory true;
       status deprecated;
     }
-
     container record {
       if-feature synchronizer;
-      uses xos-sync-record;
+      uses sync-record;
     }
   }
 
   grouping tenant-root {
-    uses xos-base {
+    uses base-common {
       refine 'name' {
         description "Specify name of the TenantRoot";
       }
@@ -167,11 +168,17 @@
   }
 
   grouping service {
-    uses xos-base {
+    uses base-common {
       refine 'name' {
         description "Name of the Service";
       }
     }
+    leaf kind {
+      type identityref {
+        base kind;
+      }
+      default generic;
+    }
     leaf description {
       type string {
         length 0..254;
@@ -197,6 +204,22 @@
       leaf public  { type string { length 0..1024; } }
       leaf private { type string { length 0..1024; } }
     }
+    list provider {
+      description
+        "Each entry represents a provider of the service. Each unique service
+         should augment this block with service specific attributes.";
+      key id;
+      uses xos:provider;
+    }
+    list subscriber {
+      description
+        "Each entry represents a subscriber of the service. Each unique service
+         should augment this block with service specific attributes.";
+      key id;
+      uses xos:subscriber;
+      notification subscriber-added;
+      notification subscriber-deleted;
+    }
     
     // TOOD: need to better understand relationship between Service and Slice
     action scale {
@@ -207,7 +230,7 @@
   }
 
   grouping tenancy {
-    uses xos-base;
+    uses base-common;
 
     choice provider {
       description "only one type of provider node is valid.";
