diff --git a/.gitignore b/.gitignore
index 5148e52..f85f310 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,9 @@
 
 # Optional REPL history
 .node_repl_history
+
+*~
+
+# ignore generated *.js files inside lib and dist
+lib/*
+dist/*
diff --git a/cord-device.yang b/cord-device.yang
new file mode 100644
index 0000000..6021966
--- /dev/null
+++ b/cord-device.yang
@@ -0,0 +1,48 @@
+module cord-device {
+  namespace "urn:cord:device";
+  prefix cord-dev;
+  yang-version 1.1;
+
+  organization
+   "Open Networking Lab (CORD) / Corenova Technologies";
+
+  contact
+    "Larry Peterson <llp@onlab.us>
+     Peter K. Lee <peter@corenova.com>";
+  
+  import ietf-yang-types { prefix yang; }
+  
+  revision 2016-07-14 {
+    description "Initial revision.";
+  }
+
+  typedef bandwidth {
+    type unit32;
+    range 1000000..max; // should be at least 1 Mbps?
+    units 'bps';
+  }
+  
+  grouping device {
+    leaf mac { type yang:mac-address; mandatory true; }
+    leaf identity { type string; }
+
+    leaf subscriber {
+      type instance-identifier;
+      config false;
+    }
+    
+    container features {
+      // how are the uplink/downlink speeds defined here related to 'subscriber'?
+      leaf uplink-speed {
+        type bandwidth;
+        default 1000000000;      
+      }
+      leaf downlink-speed {
+        type bandwidth;
+        default 1000000000;      
+      }
+      action update;
+    }
+    action save;
+  }
+}
diff --git a/cord-subscriber.yang b/cord-subscriber.yang
new file mode 100644
index 0000000..72185f8
--- /dev/null
+++ b/cord-subscriber.yang
@@ -0,0 +1,192 @@
+module cord-subscriber {
+  namespace "urn:cord:subscriber";
+  prefix cord-sub;
+  yang-version 1.1;
+
+  organization
+   "Open Networking Lab (CORD) / Corenova Technologies";
+
+  contact
+    "Larry Peterson <llp@onlab.us>
+     Peter K. Lee <peter@corenova.com>";
+  
+  import xos-core        { prefix xos; }
+  import cord-device     { prefix dev; }
+  import ietf-yang-types { prefix yang; }
+  import yang-node-link  { prefix node; }
+
+  revision 2016-07-14 {
+    description "Initial revision.";
+  }
+  
+  identity cord-subscriber { base xos:subscriber; }
+
+  grouping subscriber {
+    uses xos:subscriber {
+      refine kind { default cord-subscriber; }
+    }
+    leaf status {
+      type enumeration {
+        enum "enabled" {
+          description "Enabled";
+          value 1;
+        }
+        enum "suspended" {
+          description "Suspended";
+        }
+        enum "delinquent" {
+          description "Delinquent";
+        }
+        enum "violation" {
+          description "Copyright Violation";
+        }
+      }
+      default enabled;
+    }
+    leaf demo { type boolean; default false; }
+    leaf uplink-speed {
+      type dev:bandwidth;
+      default 1000000000;      
+    }
+    leaf downlink-speed {
+      type dev:bandwidth;
+      default 1000000000;      
+    }
+
+    container services {
+      description
+        "Contains various services available to the subscriber";
+      
+      container cdn {
+        leaf enabled { type boolean; default false; }
+      }
+      container firewall {
+        leaf enabled { type boolean; default false; }
+        leaf-list rules {
+          // should qualify further
+          type string;
+        }
+      }
+      container url-filter {
+        leaf enabled { type boolean; default false; }
+        leaf level {
+          type enumeration {
+            enum "PG";
+            // other types of level...
+          }
+        }
+        leaf-list rules {
+          // should qualify further
+          type string;
+        }
+      }
+      container uverse {
+        leaf enabled { type boolean; default false; }
+      }
+    }
+
+    list devices {
+      uses dev:device;
+      key 'mac';
+
+      action create {
+        input {
+          leaf mac {
+            type yang:mac-address;
+            mandatory true;
+          }
+          // other acceptable attributes that can be used during create
+        }
+      }
+      action update {
+        input {
+          leaf mac {
+            type yang:mac-address;
+            //must "../.[mac = current()]";
+            mandatory true;
+          }
+          // other acceptable attributes for updating
+        }
+      }
+      action delete {
+        input {
+          leaf mac {
+            type yang:mac-address;
+            //must "../.[mac = current()]";
+            mandatory true;
+          }
+          // other acceptable attributes for updating
+        }
+      }
+    }
+    action save {
+      description "when invoked, saves the model to a safe place";
+    }
+  }
+
+  grouping subscriber-controller {
+    uses subscriber;
+
+    container features {
+      node:link cdn {
+        path "../../services/cdn/enabled";
+      }
+      node:link uplink-speed {
+        path "../../uplink-speed";
+      }
+      node:link downlink-speed {
+        path "../../downlink-speed";
+      }
+      node:link uverse {
+        path "../../services/uverse/enabled";
+      }
+      node:link status {
+        path "../../status";
+      }
+      action update {
+        description "when invoked, updates the features container (PUT)";
+      }
+    }
+    
+    container identity {
+      node:link account-num {
+        path "../../service-specific-id";
+      }
+      node:link name {
+        path "../../name";
+      }
+      action update {
+        description "when invoked, updates the identity container (PUT)";
+      }
+    }
+
+    container related {
+      // placeholder where other services can augment for their info
+    }
+
+    action create;
+    action delete;
+  }
+
+  // primary configuration tree for this module
+  list subscriber {
+    uses subscriber-controller;
+    key 'id';
+
+    description
+      "Authorative list of all subscriber instances";
+
+    leaf humanReadableName {
+      config false;
+      type string {
+        pattern '^cordSubscriber-\w+$';
+      }
+    }
+  }
+
+  // here we augment the /api/tenant/cord API configuration tree in 'xos' module
+  augment "/xos:api/xos:tenant/xos:cord" {
+    node:link subscriber { path "/subscriber"; }
+  }
+  
+}
diff --git a/old/xos-core-service.yang b/old/xos-core-service.yang
new file mode 100644
index 0000000..3923221
--- /dev/null
+++ b/old/xos-core-service.yang
@@ -0,0 +1,120 @@
+module xos-core-service {
+  namespace "urn:xos:core:service";
+  prefix xos-cs;
+
+  import complex-types { prefix ct; }
+
+  revision 2015-10-01 {
+    description "Initial revision.";
+  }
+
+  grouping service-attribute {
+    leaf name { type string { length 128; } }
+    leaf value { type string { length 1024; } }
+    leaf service {
+      type instance-identifier { ct:instance-type Service; require-instance true; }
+    }
+  }
+
+  grouping service-role {
+    leaf role {
+      type enumeration {
+        enum "admin";
+        //enum "Admin";
+      }
+    }
+  }
+
+  grouping common-model-attr {
+    leaf kind {
+      type string { length 30; }
+      default "generic";
+    }
+    leaf name { type string { length 255; } }
+  }
+
+  ct:complex-type ServiceElement {
+    ct:abstract true;
+    leaf enabled { type boolean; default true; }
+  }
+  
+  ct:complex-type Service {
+    ct:extends ServiceElement;
+    
+    leaf description {
+      type string { length 255; }
+      description "Description of Service";
+    }
+    leaf published { type boolean; default true; }
+
+    uses common-model-attr {
+      refine kind {
+        description "Kind of Service";
+      }
+      refine name {
+        description "Service Name";
+      }
+    }
+  }
+
+  ct:complex-type User {
+    ct:extends ServiceElement;
+    // TBD - should go to a separate xos-core-user module or such
+  }
+  
+  ct:complex-type ServicePrivilege {
+    key "user-service-role";
+    
+    leaf user {
+      type instance-identifier { ct:instance-type User; require-instance true; }
+    }
+    leaf service {
+      type instance-identifier { ct:instance-type Service; }
+    }
+    uses service-role;
+  }
+
+  ct:complex-type TenantRoot {
+    ct:extends ServiceElement;
+    
+    description
+      "A tenantRoot is one of the things that can sit at the root of a chain
+        of tenancy. This object represents a node.";
+    uses common-model-attr;
+  }
+
+  ct:complex-type ContainerImage {
+    // TBD
+  }
+  
+  ct:complex-type Tenancy {
+    ct:extends ServiceElement;
+    
+    description
+      "A Tenancy describes relationship between a subscriber and a provider";
+    
+    uses common-model-attr;
+
+    leaf provider { type instance-identifer { ct:instance-type Service; } }
+    leaf subscriber {
+      type instance-identifier {
+        ct:instance-type ServiceElement;
+      }
+    }
+
+    // adding stuff from TenantWithContainer here...
+    leaf creator { type instance-identifier { ct:instance-type User; } }
+    leaf image { type instance-identifier { ct:instance-type ContainerImage; } }
+  }
+
+  ct:complex-type Subscriber {
+    ct:extends TenantRoot;
+    refine kind { default "Subscriber"; }
+  }
+
+  ct:complex-type Provider {
+    ct:extends TenantRoot;
+    refine kind { default "Provider"; }
+  }
+  
+}
diff --git a/xos-core.yang b/xos-core.yang
new file mode 100644
index 0000000..842a537
--- /dev/null
+++ b/xos-core.yang
@@ -0,0 +1,93 @@
+module xos-core {
+  namespace "urn:xos:core:service";
+  prefix xos;
+  yang-version 1.1;
+
+  organization
+   "Open Networking Lab (XOS) / Corenova Technologies";
+
+  contact
+    "Larry Peterson <llp@onlab.us>
+     Peter K. Lee <peter@corenova.com>";
+  
+  import ietf-yang-types { prefix yang; }
+
+  revision 2016-07-14 {
+    description "Initial revision.";
+  }
+  
+  identity kind;
+  identity generic    { base kind; }
+  identity subscriber { base kind; }
+
+  typedef unique-identifier {
+    description "defines valid formats for external reference id";
+    type union {
+      type yang:uuid;
+      type inet:uri;
+      type uint32 { range 1..max; }
+    }
+  }
+
+  grouping tenant-root {
+
+    description
+      "A Tenant Root is one of the things that can sit at the root of a chain
+       of tenancy. This object represents a node.";
+
+    leaf id {
+      type unique-identifier;
+      config false;
+      mandatory true;
+    }
+    leaf kind {
+      type identityref {
+        base kind;
+      }
+      default generic;
+    }
+    leaf name {
+      type string {
+        length 0..255;
+      }
+      description "Specify name of the TenantRoot";
+    }
+
+    leaf service-specific-attribute { type string; }
+    leaf service-specific-id {
+      type unique-identifier;
+      mandatory true;
+    }
+
+    list subscribed-tenants {
+      config false;
+      // not exactly clear how this is populated
+    }
+    
+  }
+  
+  grouping subscriber {
+    uses tenant-root {
+      refine kind { default subscriber; }
+    }
+    // seems we should have interesting attributes specific to subscriber?
+    
+  }
+
+  // main configuration tree for XOS
+
+  container api {
+    container service {
+      // placeholder endpoint for services
+    }
+    container tenant {
+      container cord {
+        // placeholder endpoint for augment
+      }
+      container onos {
+        // placeholder endpoint for augment
+      }
+    }
+  }
+  
+}
