fixes #7. I'm preserving all the typedefs inside xos-types for now but I don't think they're necessary.  The intent of YANG typedef system is to define distinct forms of type for reusability but since all these typedefs are of the 'unique-identifier' type, they are largely redundant.
diff --git a/schema/xos-core.yang b/schema/xos-core.yang
index 1c8de53..2bce2cf 100644
--- a/schema/xos-core.yang
+++ b/schema/xos-core.yang
@@ -3,6 +3,10 @@
   prefix xos;
   yang-version 1.1;
 
+  import ietf-yang-types { prefix yang; }
+  import ietf-inet-types { prefix inet; }
+  import xos-types       { prefix xtype; }
+
   organization
    "Open Networking Lab (XOS) / Corenova Technologies";
 
@@ -26,10 +30,6 @@
     description "Initial revision.";
   }
   
-  import ietf-yang-types { prefix yang; }
-  import ietf-inet-types { prefix inet; }
-  import xos-types { prefix xos; }
-
   feature synchronizer {
     description
       "Enables configuration synchronization to the distributed store.";
@@ -39,24 +39,6 @@
   identity generic { base kind; }
   identity service { base kind; }
 
-  typedef unique-identifier {
-    description "defines valid formats for external reference id";
-    type union {
-      type uint32 { range 1..max; }
-      type yang:uuid;
-      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 attribute-pair {
     leaf name  { type string { length 0..128; } }
     leaf value { type string; }
@@ -112,7 +94,7 @@
   
   grouping base-common {
     leaf id {
-      type unique-identifier;
+      type xtype:unique-identifier;
       mandatory true;
     }
     leaf name {
@@ -128,7 +110,7 @@
       description "backwards-compatible attribute association";
     }
     leaf service-specific-id {
-      type unique-identifier;
+      type xtype:unique-identifier;
       mandatory true;
       status deprecated;
     }
@@ -164,9 +146,6 @@
     }
     // seems we should have interesting attributes specific to provider?
   }
-  grouping slice {
-    // TBD
-  }
   grouping service {
     uses base-common {
       refine 'name' {
@@ -284,7 +263,7 @@
 
     leaf slice-url {
        description "A URL describing the purpose of this slice";
-       type xos.refs.url-field; 
+       type xtype:url-field; 
        // blank true;
     }
 
@@ -295,7 +274,7 @@
 
     leaf service {
        description "The service that runs in this slice";
-       type xos.refs.service;
+       type xtype:service;
     }
 
     leaf network {
@@ -309,42 +288,45 @@
     }
 
     leaf service-class {
-       type xos.refs.service-class;
-       status deprecated;
+      type xtype:service-class;
+      status deprecated;
     }
    
     leaf creator {
-       type xos.refs.user;
+      type xtype:user;
     }
 
     leaf default-flavor {
-       type xos.refs.flavor;
+      type xtype:flavor;
     }
 
     leaf default-image {
-       type xos.refs.image;
+      type xtype:image;
     }
 
     leaf default-node {
-       type xos.refs.node;
+      type xtype:node;
     } 
 
     leaf mount-data-sets {
-       type string;
-       default "GenBank";
-       length 0..256;
+      type string {
+        length 0..256; 
+      }
+      default "GenBank";
     } 
 
     leaf default_isolation {
-       type string;
-       default "vm";
-       length 0..30;
+      type string {
+        length 0..30;
+      }
+      default "vm";
     } 
 
     leaf-list tags {
-        type leafref {
-            path "/tag[id = current()/../id]/id";
-        }
+      // below leafref is not valid since there is no /tag
+      type leafref {
+        path "/tag[id = current()/../id]/id";
+      }
     }
   }