diff --git a/config-models/aether-2.0.x/files/aether-2.0.0.tree b/config-models/aether-2.0.x/files/aether-2.0.0.tree
new file mode 100644
index 0000000..24f7a1b
--- /dev/null
+++ b/config-models/aether-2.0.x/files/aether-2.0.0.tree
@@ -0,0 +1,161 @@
+module: onf-application
+  +--rw application
+     +--rw application* [id]
+        +--rw id              application-id
+        +--rw display-name?   string
+        +--rw description?    at:description
+        +--rw address         ietf:host
+        +--rw endpoint* [endpoint-id]
+        |  +--rw endpoint-id      yg:yang-identifier
+        |  +--rw port-start?      ietf:port-number
+        |  +--rw port-end?        ietf:port-number
+        |  +--rw protocol?        at:protocol
+        |  +--rw mbr
+        |  |  +--rw uplink?     at:bitrate
+        |  |  +--rw downlink?   at:bitrate
+        |  +--rw traffic-class?   -> /tc:traffic-class/traffic-class/id
+        |  +--rw display-name?    string
+        +--rw enterprise      -> /ent:enterprise/enterprise/id
+
+module: onf-connectivity-service
+  +--rw connectivity-service
+     +--rw connectivity-service* [id]
+        +--rw id                    connectivity-service-id
+        +--rw display-name?         string
+        +--rw description?          at:description
+        +--rw core-5g-endpoint?     inet:uri
+        +--rw acc-prometheus-url?   inet:uri
+
+module: onf-device-group
+  +--rw device-group
+     +--rw device-group* [id]
+        +--rw id              device-group-id
+        +--rw description?    at:description
+        +--rw display-name?   string
+        +--rw imsis* [imsi-id]
+        |  +--rw imsi-id            yg:yang-identifier
+        |  +--rw imsi-range-from?   uint64
+        |  +--rw imsi-range-to?     uint64
+        |  +--rw display-name?      string
+        +--rw ip-domain?      -> /ipd:ip-domain/ip-domain/id
+        +--rw device
+        |  +--rw mbr
+        |  |  +--rw uplink      at:bitrate
+        |  |  +--rw downlink    at:bitrate
+        |  +--rw traffic-class    -> /tc:traffic-class/traffic-class/id
+        +--rw site            -> /st:site/site/id
+
+module: onf-enterprise
+  +--rw enterprise
+     +--rw enterprise* [id]
+        +--rw id                      enterprise-id
+        +--rw display-name?           string
+        +--rw description?            at:description
+        +--rw connectivity-service* [connectivity-service]
+           +--rw connectivity-service    -> /cs:connectivity-service/connectivity-service/id
+           +--rw enabled?                boolean
+
+module: onf-ip-domain
+  +--rw ip-domain
+     +--rw ip-domain* [id]
+        +--rw id               ip-domain-id
+        +--rw display-name?    string
+        +--rw dnn              at:dnn
+        +--rw dns-primary?     inet:ip-address
+        +--rw dns-secondary?   inet:ip-address
+        +--rw subnet           inet:ipv4-prefix
+        +--rw admin-status?    at:admin-status
+        +--rw mtu?             at:mtu
+        +--rw description?     at:description
+        +--rw enterprise       -> /ent:enterprise/enterprise/id
+
+module: onf-site
+  +--rw site
+     +--rw site* [id]
+        +--rw id                 site-id
+        +--rw display-name?      string
+        +--rw small-cell* [small-cell-id]
+        |  +--rw small-cell-id    yg:yang-identifier
+        |  +--rw address?         inet:host
+        |  +--rw tac              at:tac
+        |  +--rw enable?          boolean
+        |  +--rw display-name?    string
+        +--rw monitoring
+        |  +--rw edge-cluster-prometheus-url?      inet:uri
+        |  +--rw edge-monitoring-prometheus-url?   inet:uri
+        |  +--rw edge-device* [edge-device-id]
+        |     +--rw edge-device-id    yg:yang-identifier
+        |     +--rw display-name?     string
+        |     +--rw description?      at:description
+        +--rw enterprise         -> /ent:enterprise/enterprise/id
+        +--rw imsi-definition
+        |  +--rw mcc           at:mcc
+        |  +--rw mnc           at:mnc
+        |  +--rw enterprise    at:ent
+        |  +--rw format        string
+        +--rw description?       at:description
+
+module: onf-template
+  +--rw template
+     +--rw template* [id]
+        +--rw id                  template-id
+        +--rw display-name?       string
+        +--rw sst?                at:sst
+        +--rw sd?                 at:sd
+        +--rw slice
+        |  +--rw mbr
+        |     +--rw uplink?                at:bitrate
+        |     +--rw downlink?              at:bitrate
+        |     +--rw uplink-burst-size?     at:burst
+        |     +--rw downlink-burst-size?   at:burst
+        +--rw default-behavior    at:behavior
+        +--rw description?        at:description
+
+module: onf-traffic-class
+  +--rw traffic-class
+     +--rw traffic-class* [id]
+        +--rw id              traffic-class-id
+        +--rw display-name?   string
+        +--rw arp?            at:arp
+        +--rw qci?            at:qci
+        +--rw pelr?           at:pelr
+        +--rw pdb?            at:pdb
+        +--rw description?    at:description
+
+module: onf-upf
+  +--rw upf
+     +--rw upf* [id]
+        +--rw id                 upf-id
+        +--rw address            inet:host
+        +--rw port               inet:port-number
+        +--rw config-endpoint?   inet:uri
+        +--rw display-name?      string
+        +--rw description?       at:description
+        +--rw enterprise         -> /ent:enterprise/enterprise/id
+        +--rw site               -> /st:site/site/id
+
+module: onf-vcs
+  +--rw vcs
+     +--rw vcs* [id]
+        +--rw id                  vcs-id
+        +--rw display-name?       string
+        +--rw device-group* [device-group]
+        |  +--rw device-group    -> /dg:device-group/device-group/id
+        |  +--rw enable?         boolean
+        +--rw default-behavior    at:behavior
+        +--rw filter* [application]
+        |  +--rw application    -> /app:application/application/id
+        |  +--rw priority?      at:priority
+        |  +--rw allow?         boolean
+        +--rw upf?                -> /upf:upf/upf/id
+        +--rw description?        at:description
+        +--rw enterprise          -> /ent:enterprise/enterprise/id
+        +--rw site                -> /st:site/site/id
+        +--rw sst                 at:sst
+        +--rw sd                  at:sd
+        +--rw slice
+           +--rw mbr
+              +--rw uplink?                at:bitrate
+              +--rw downlink?              at:bitrate
+              +--rw uplink-burst-size?     at:burst
+              +--rw downlink-burst-size?   at:burst
diff --git a/config-models/aether-2.0.x/files/yang/ietf-inet-types.yang b/config-models/aether-2.0.x/files/yang/ietf-inet-types.yang
new file mode 100644
index 0000000..fa57f75
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/ietf-inet-types.yang
@@ -0,0 +1,458 @@
+module ietf-inet-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+  prefix "inet";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of types related to protocol fields ***/
+
+  typedef ip-version {
+    type enumeration {
+      enum unknown {
+        value "0";
+        description
+         "An unknown or unspecified version of the Internet
+          protocol.";
+      }
+      enum ipv4 {
+        value "1";
+        description
+         "The IPv4 protocol as defined in RFC 791.";
+      }
+      enum ipv6 {
+        value "2";
+        description
+         "The IPv6 protocol as defined in RFC 2460.";
+      }
+    }
+    description
+     "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+    reference
+     "RFC  791: Internet Protocol
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  typedef dscp {
+    type uint8 {
+      range "0..63";
+    }
+    description
+     "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+    reference
+     "RFC 3289: Management Information Base for the Differentiated
+                Services Architecture
+      RFC 2474: Definition of the Differentiated Services Field
+                (DS Field) in the IPv4 and IPv6 Headers
+      RFC 2780: IANA Allocation Guidelines For Values In
+                the Internet Protocol and Related Headers";
+  }
+
+  typedef ipv6-flow-label {
+    type uint32 {
+      range "0..1048575";
+    }
+    description
+     "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+    reference
+     "RFC 3595: Textual Conventions for IPv6 Flow Label
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+  }
+
+  typedef port-number {
+    type uint16 {
+      range "0..65535";
+    }
+    description
+     "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+    reference
+     "RFC  768: User Datagram Protocol
+      RFC  793: Transmission Control Protocol
+      RFC 4960: Stream Control Transmission Protocol
+      RFC 4340: Datagram Congestion Control Protocol (DCCP)
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  /*** collection of types related to autonomous systems ***/
+
+  typedef as-number {
+    type uint32;
+    description
+     "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+    reference
+     "RFC 1930: Guidelines for creation, selection, and registration
+                of an Autonomous System (AS)
+      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+      RFC 4001: Textual Conventions for Internet Network Addresses
+      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+                Number Space";
+  }
+
+  /*** collection of types related to IP addresses and hostnames ***/
+
+  typedef ip-address {
+    type union {
+      type inet:ipv4-address;
+      type inet:ipv6-address;
+    }
+    description
+     "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+      + '(%[\p{N}\p{L}]+)?';
+    }
+    description
+      "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+  }
+
+  typedef ipv6-address {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(%[\p{N}\p{L}]+)?';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(%.+)?';
+    }
+    description
+     "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-address-no-zone {
+    type union {
+      type inet:ipv4-address-no-zone;
+      type inet:ipv6-address-no-zone;
+    }
+    description
+     "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address-no-zone {
+    type inet:ipv4-address {
+      pattern '[0-9\.]*';
+    }
+    description
+      "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+  }
+
+  typedef ipv6-address-no-zone {
+    type inet:ipv6-address {
+      pattern '[0-9a-fA-F:\.]*';
+    }
+    description
+      "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-prefix {
+    type union {
+      type inet:ipv4-prefix;
+      type inet:ipv6-prefix;
+    }
+    description
+     "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+  }
+
+  typedef ipv4-prefix {
+    type string {
+      pattern
+         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+    }
+    description
+     "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+  }
+
+  typedef ipv6-prefix {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(/.+)';
+    }
+
+    description
+     "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+    reference
+     "RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  /*** collection of domain name and URI types ***/
+
+  typedef domain-name {
+    type string {
+      length "1..253";
+      pattern
+        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+      + '|\.';
+    }
+    description
+     "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+    reference
+     "RFC  952: DoD Internet Host Table Specification
+      RFC 1034: Domain Names - Concepts and Facilities
+      RFC 1123: Requirements for Internet Hosts -- Application
+                and Support
+      RFC 2782: A DNS RR for specifying the location of services
+                (DNS SRV)
+      RFC 5890: Internationalized Domain Names in Applications
+                (IDNA): Definitions and Document Framework";
+  }
+
+  typedef host {
+    type union {
+      type inet:ip-address;
+      type inet:domain-name;
+    }
+    description
+     "The host type represents either an IP address or a DNS
+      domain name.";
+  }
+
+  typedef uri {
+    type string;
+    description
+     "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+    reference
+     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+                Group: Uniform Resource Identifiers (URIs), URLs,
+                and Uniform Resource Names (URNs): Clarifications
+                and Recommendations
+      RFC 5017: MIB Textual Conventions for Uniform Resource
+                Identifiers (URIs)";
+  }
+
+}
diff --git a/config-models/aether-2.0.x/files/yang/ietf-yang-types.yang b/config-models/aether-2.0.x/files/yang/ietf-yang-types.yang
new file mode 100644
index 0000000..ee58fa3
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/ietf-yang-types.yang
@@ -0,0 +1,474 @@
+module ietf-yang-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+  prefix "yang";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - yang-identifier
+      - hex-string
+      - uuid
+      - dotted-quad";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of counter and gauge types ***/
+
+  typedef counter32 {
+    type uint32;
+    description
+     "The counter32 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter32 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter32 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter32.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter32 {
+    type yang:counter32;
+    default "0";
+    description
+     "The zero-based-counter32 type represents a counter32
+      that has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter32 textual convention of the SMIv2.";
+    reference
+      "RFC 4502: Remote Network Monitoring Management Information
+                 Base Version 2";
+  }
+
+  typedef counter64 {
+    type uint64;
+    description
+     "The counter64 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter64 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter64 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter64.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter64 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter64 {
+    type yang:counter64;
+    default "0";
+    description
+     "The zero-based-counter64 type represents a counter64 that
+      has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter64 textual convention of the SMIv2.";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  typedef gauge32 {
+    type uint32;
+    description
+     "The gauge32 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^32-1 (4294967295 decimal), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge32 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge32 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the Gauge32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef gauge64 {
+    type uint64;
+    description
+     "The gauge64 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^64-1 (18446744073709551615), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge64 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge64 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the CounterBasedGauge64 SMIv2 textual convention defined
+      in RFC 2856";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  /*** collection of identifier-related types ***/
+
+  typedef object-identifier {
+    type string {
+      pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+            + '(\.(0|([1-9]\d*)))*';
+    }
+    description
+     "The object-identifier type represents administratively
+      assigned names in a registration-hierarchical-name tree.
+
+      Values of this type are denoted as a sequence of numerical
+      non-negative sub-identifier values.  Each sub-identifier
+      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
+      are separated by single dots and without any intermediate
+      whitespace.
+
+      The ASN.1 standard restricts the value space of the first
+      sub-identifier to 0, 1, or 2.  Furthermore, the value space
+      of the second sub-identifier is restricted to the range
+      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
+      the ASN.1 standard requires that an object identifier
+      has always at least two sub-identifiers.  The pattern
+      captures these restrictions.
+
+      Although the number of sub-identifiers is not limited,
+      module designers should realize that there may be
+      implementations that stick with the SMIv2 limit of 128
+      sub-identifiers.
+
+      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+      since it is not restricted to 128 sub-identifiers.  Hence,
+      this type SHOULD NOT be used to represent the SMIv2 OBJECT
+      IDENTIFIER type; the object-identifier-128 type SHOULD be
+      used instead.";
+    reference
+     "ISO9834-1: Information technology -- Open Systems
+      Interconnection -- Procedures for the operation of OSI
+      Registration Authorities: General procedures and top
+      arcs of the ASN.1 Object Identifier tree";
+  }
+
+  typedef object-identifier-128 {
+    type object-identifier {
+      pattern '\d*(\.\d*){1,127}';
+    }
+    description
+     "This type represents object-identifiers restricted to 128
+      sub-identifiers.
+
+      In the value set and its semantics, this type is equivalent
+      to the OBJECT IDENTIFIER type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef yang-identifier {
+    type string {
+      length "1..max";
+      pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+      pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+    }
+    description
+      "A YANG identifier string as defined by the 'identifier'
+       rule in Section 12 of RFC 6020.  An identifier must
+       start with an alphabetic character or an underscore
+       followed by an arbitrary sequence of alphabetic or
+       numeric characters, underscores, hyphens, or dots.
+
+       A YANG identifier MUST NOT start with any possible
+       combination of the lowercase or uppercase character
+       sequence 'xml'.";
+    reference
+      "RFC 6020: YANG - A Data Modeling Language for the Network
+                 Configuration Protocol (NETCONF)";
+  }
+
+  /*** collection of types related to date and time***/
+
+  typedef date-and-time {
+    type string {
+      pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+            + '(Z|[\+\-]\d{2}:\d{2})';
+    }
+    description
+     "The date-and-time type is a profile of the ISO 8601
+      standard for representation of dates and times using the
+      Gregorian calendar.  The profile is defined by the
+      date-time production in Section 5.6 of RFC 3339.
+
+      The date-and-time type is compatible with the dateTime XML
+      schema type with the following notable exceptions:
+
+      (a) The date-and-time type does not allow negative years.
+
+      (b) The date-and-time time-offset -00:00 indicates an unknown
+          time zone (see RFC 3339) while -00:00 and +00:00 and Z
+          all represent the same time zone in dateTime.
+
+      (c) The canonical format (see below) of data-and-time values
+          differs from the canonical format used by the dateTime XML
+          schema type, which requires all times to be in UTC using
+          the time-offset 'Z'.
+
+      This type is not equivalent to the DateAndTime textual
+      convention of the SMIv2 since RFC 3339 uses a different
+      separator between full-date and full-time and provides
+      higher resolution of time-secfrac.
+
+      The canonical format for date-and-time values with a known time
+      zone uses a numeric time zone offset that is calculated using
+      the device's configured known offset to UTC time.  A change of
+      the device's offset to UTC time will cause date-and-time values
+      to change accordingly.  Such changes might happen periodically
+      in case a server follows automatically daylight saving time
+      (DST) time zone offset changes.  The canonical format for
+      date-and-time values with an unknown time zone (usually
+      referring to the notion of local time) uses the time-offset
+      -00:00.";
+    reference
+     "RFC 3339: Date and Time on the Internet: Timestamps
+      RFC 2579: Textual Conventions for SMIv2
+      XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+  }
+
+  typedef timeticks {
+    type uint32;
+    description
+     "The timeticks type represents a non-negative integer that
+      represents the time, modulo 2^32 (4294967296 decimal), in
+      hundredths of a second between two epochs.  When a schema
+      node is defined that uses this type, the description of
+      the schema node identifies both of the reference epochs.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeTicks type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef timestamp {
+    type yang:timeticks;
+    description
+     "The timestamp type represents the value of an associated
+      timeticks schema node at which a specific occurrence
+      happened.  The specific occurrence must be defined in the
+      description of any schema node defined using this type.  When
+      the specific occurrence occurred prior to the last time the
+      associated timeticks attribute was zero, then the timestamp
+      value is zero.  Note that this requires all timestamp values
+      to be reset to zero when the value of the associated timeticks
+      attribute reaches 497+ days and wraps around to zero.
+
+      The associated timeticks schema node must be specified
+      in the description of any schema node using this type.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeStamp textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of generic address types ***/
+
+  typedef phys-address {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+
+    description
+     "Represents media- or physical-level addresses represented
+      as a sequence octets, each octet represented by two hexadecimal
+      numbers.  Octets are separated by colons.  The canonical
+      representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the PhysAddress textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  typedef mac-address {
+    type string {
+      pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+    }
+    description
+     "The mac-address type represents an IEEE 802 MAC address.
+      The canonical representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the MacAddress textual convention of the SMIv2.";
+    reference
+     "IEEE 802: IEEE Standard for Local and Metropolitan Area
+                Networks: Overview and Architecture
+      RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of XML-specific types ***/
+
+  typedef xpath1.0 {
+    type string;
+    description
+     "This type represents an XPATH 1.0 expression.
+
+      When a schema node is defined that uses this type, the
+      description of the schema node MUST specify the XPath
+      context in which the XPath expression is evaluated.";
+    reference
+     "XPATH: XML Path Language (XPath) Version 1.0";
+  }
+
+  /*** collection of string types ***/
+
+  typedef hex-string {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+    description
+     "A hexadecimal string with octets represented as hex digits
+      separated by colons.  The canonical representation uses
+      lowercase characters.";
+  }
+
+  typedef uuid {
+    type string {
+      pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+            + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+    }
+    description
+     "A Universally Unique IDentifier in the string representation
+      defined in RFC 4122.  The canonical representation uses
+      lowercase characters.
+
+      The following is an example of a UUID in string representation:
+      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+      ";
+    reference
+     "RFC 4122: A Universally Unique IDentifier (UUID) URN
+                Namespace";
+  }
+
+  typedef dotted-quad {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
+    }
+    description
+      "An unsigned 32-bit number expressed in the dotted-quad
+       notation, i.e., four octets written as decimal numbers
+       and separated with the '.' (full stop) character.";
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-aether-types.yang b/config-models/aether-2.0.x/files/yang/onf-aether-types.yang
new file mode 100755
index 0000000..679648e
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-aether-types.yang
@@ -0,0 +1,159 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-aether-types {
+  namespace "http://opennetworking.org/aether/aether-types";
+  prefix at;
+
+  import ietf-inet-types { prefix inet; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description "A set of base types for aether modeling.";
+
+  revision "2021-09-10" {
+    description "Aether Base Types";
+    reference "RFC 6087";
+  }
+
+  typedef bitrate {
+      type uint64 {
+      }
+    description "The typedef for bitrate";
+  }
+
+  typedef burst {
+      type uint32 {
+      }
+      default 625000;
+    description "The typedef for burst";
+  }
+
+  typedef mcc {
+      type string {
+        pattern '[0-9]{3}';
+      }
+    description "The typedef for mcc";
+  }
+
+  typedef mnc {
+      type string {
+        pattern '[0-9]{2,3}';
+      }
+    description "The typedef for mnc";
+  }
+
+  typedef tac {
+      type string {
+        length 4..8;
+        pattern '[0-9A-F\.]*';
+      }
+    description "The typedef for tac";
+  }
+
+  typedef ent {
+      type uint32 {
+        range 0..999;
+      }
+    description "The typedef for ent";
+  }
+
+  typedef dnn {
+      type string {
+        length 1..32;
+      }
+    description "The typedef for dnn";
+  }
+
+  typedef sst {
+      type uint8 {
+        range 1..255;
+      }
+    description "The typedef for sst";
+  }
+
+  typedef sd {
+      type uint32 {
+        range 0..16777215;
+      }
+    description "The typedef for sd";
+  }
+
+  typedef qci {
+      type uint8 {
+        range 1..32;
+      }
+    description "The typedef for qci";
+  }
+
+  typedef arp {
+      type uint8 {
+        range 1..15;
+      }
+    description "The typedef for arp";
+  }
+
+  typedef pelr {
+      type int8 {
+        range 0..10;
+      }
+    description "The typedef for pelr";
+  }
+
+  typedef pdb {
+      type uint16 {
+        range 0..1000;
+      }
+    description "The typedef for pdb";
+  }
+
+  typedef priority {
+    type uint8 {
+      // priorities 201-255 are reserved for system use
+      range 0..200;
+    }
+    description "The typedef for priority";
+  }
+
+  // "TCP" or "UDP"
+  typedef protocol {
+      type string {
+        length 3;
+        pattern "TCP|UDP";
+      }
+      default "TCP";
+    description "The typedef for protocol";
+  }
+
+  // "ENABLE" | "MAINTENTANCE" | "DISABLE"
+  typedef admin-status {
+      type string {
+        length 0..16;
+        pattern "ENABLE|MAINTENANCE|DISABLE";
+      }
+      default "ENABLE";
+    description "The typedef for admin-status";
+  }
+
+  typedef behavior {
+      type string {
+        length 0..20;
+        pattern "DENY-ALL|ALLOW-ALL|ALLOW-PUBLIC";
+      }
+    description "The typedef for behavior";
+  }
+
+  typedef mtu {
+      type inet:port-number;
+      default 1492;
+    description "The typedef for mtu";
+  }
+
+  typedef description {
+    type string {
+      length 1..1024;
+    }
+    description "The typedef for description";
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-application.yang b/config-models/aether-2.0.x/files/yang/onf-application.yang
new file mode 100755
index 0000000..c48cab1
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-application.yang
@@ -0,0 +1,128 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-application {
+  namespace "http://opennetworking.org/enterprise/application";
+  prefix app;
+
+  import ietf-inet-types{ prefix ietf; }
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types{ prefix at; }
+  import onf-enterprise{ prefix ent; }
+  import onf-traffic-class{ prefix tc; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description
+    "An Aether Application is an application that devices may
+     connect to. Includes a set of endpoints where services are
+     provided.";
+
+  revision "2021-09-10" {
+    description "Aether Application.";
+    reference "RFC 6087";
+  }
+
+  typedef application-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+    description "The typedef for application-id";
+  }
+
+  container application {
+    description "The top level container";
+
+    list application {
+      key "id";
+      description
+        "List of applications";
+
+      leaf id {
+        type application-id;
+        description "ID for this application.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this application";
+      }
+
+      leaf address {
+        type ietf:host;
+        mandatory true;
+        description
+            "Address of this application. Either a hostname, an IP, or a subnet.";
+      }
+
+      list endpoint {
+        key "endpoint-id";
+        leaf endpoint-id {
+          type yg:yang-identifier;
+          description
+              "Id of this endpoint";
+        }
+        leaf port-start {
+          type ietf:port-number;
+          description
+              "First port in range";
+        }
+        leaf port-end {
+          type ietf:port-number;
+          description
+              "Last port in range";
+        }
+        leaf protocol {
+          type at:protocol;
+          description
+              "Protocol of this endpoint";
+        }
+        container mbr {
+          description "Maximum bitrate";
+          leaf uplink {
+            type at:bitrate;
+            units bps;
+            description "Per-Device per-Application MBR uplink data rate in bps";
+          }
+
+          leaf downlink {
+            type at:bitrate;
+            units bps;
+            description "Per-Device per application MBR downlink data rate in bps";
+          }
+        }
+        leaf traffic-class {
+          type leafref {
+            path "/tc:traffic-class/tc:traffic-class/tc:id";
+          }
+          description
+            "Link to traffic class";
+        }
+        leaf display-name {
+          type string {
+              length 1..80;
+          }
+          description "display name to use in GUI or CLI";
+        }
+        description "list for endpoint";
+      }
+
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this Application. May be set to None if the application is global to all Enterprises.";
+      }
+    }
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-connectivity-service.yang b/config-models/aether-2.0.x/files/yang/onf-connectivity-service.yang
new file mode 100755
index 0000000..e1d53b6
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-connectivity-service.yang
@@ -0,0 +1,68 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-connectivity-service {
+  namespace "http://opennetworking.org/aether/connectivity-service";
+  prefix cs;
+
+  import ietf-inet-types { prefix inet; }
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types { prefix at; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description
+    "An Aether Connectivity service is the linkage between the
+     ROC and a core that provides connectivity.";
+
+  revision "2021-10-21" {
+    description "An Aether Connectivity Service. Specifies the endpoints where the sdcore-adapter should push configuration to. A single connectivity service may be attached to multiple Enterprises.";
+    reference "RFC 6087";
+  }
+
+  typedef connectivity-service-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+   description "The typedef for connectivity-service-id";
+  }
+
+  container connectivity-service {
+    description "The top level container";
+
+    list connectivity-service {
+      key "id";
+      description
+        "List of connectivity services";
+
+      leaf id {
+        type connectivity-service-id;
+        description "ID for this connectivity service.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this connectivity service";
+      }
+
+      leaf core-5g-endpoint {
+        type inet:uri;
+        description "url of the 5g core";
+      }
+
+      leaf acc-prometheus-url {
+          type inet:uri;
+          description
+            "URL of ACC prometheus";
+      }
+    }
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-device-group.yang b/config-models/aether-2.0.x/files/yang/onf-device-group.yang
new file mode 100755
index 0000000..a93c295
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-device-group.yang
@@ -0,0 +1,141 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-device-group {
+  namespace "http://opennetworking.org/aether/device-group";
+  prefix dg;
+
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types { prefix at; }
+  import onf-ip-domain{ prefix ipd; }
+  import onf-site{ prefix st; }
+  import onf-traffic-class{ prefix tc; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description
+    "An aether device group represents a list of device IMSIS.
+     This list is expressed as a set of ranges,
+         [(from_imsi, to_imsi),
+          (from_imsi, to_imsi),
+          ...].
+     Each device group belongs to a site and has associated
+     with it an ip-profile that determines the IP address
+     and DNS settings that apply to devices within the
+     group";
+
+  revision "2021-06-02" {
+    description "An Aether Device Group";
+    reference "RFC 6087";
+  }
+
+  typedef device-group-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+    description "The typedef for device-group-id";
+  }
+
+  container device-group {
+    description "The top level container";
+
+    list device-group {
+      key "id";
+      description
+        "List of device groups";
+
+      leaf id {
+        type device-group-id;
+        description "ID for this device group.";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this device group";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      list imsis {
+        // TODO: imsi-range-from cannot be used as a list index
+        key "imsi-id";
+        leaf imsi-id {
+          type yg:yang-identifier;
+          description
+              "Id of this imsi-range";
+        }
+        leaf imsi-range-from {
+          type uint64;
+          description
+              "value of imsi-range-from";
+        }
+        leaf imsi-range-to {
+          type uint64;
+          description
+              "value of imsi-range-to";
+        }
+        leaf display-name {
+          type string {
+              length 1..80;
+          }
+          description "display name to use in GUI or CLI";
+        }
+        description
+          "List of imsi ranges that comprise this group. It's acceptable for
+           a range to degenerate to being a singleton";
+      }
+
+      leaf ip-domain {
+        type leafref {
+          path "/ipd:ip-domain/ipd:ip-domain/ipd:id";
+        }
+        description
+          "Link to ip-domain settings that determine the pool of IP addresses,
+           as well as the domain resolver settings to use";
+      }
+
+      container device {
+        description "Per-device QOS Settings";
+        container mbr {
+          description "Maximum bitrate";
+          leaf uplink {
+            type at:bitrate;
+            units bps;
+            mandatory true;
+            description "Per-device MBR uplink data rate in bps";
+          }
+
+          leaf downlink {
+            type at:bitrate;
+            units bps;
+            mandatory true;
+            description "Per-device MBR downlink data rate in bps";
+          }
+        }
+        leaf traffic-class {
+          type leafref {
+            path "/tc:traffic-class/tc:traffic-class/tc:id";
+          }
+          mandatory true;
+          description
+            "Link to traffic class";
+        }
+      }
+
+      leaf site {
+        type leafref {
+          path "/st:site/st:site/st:id";
+        }
+        mandatory true;
+        description
+          "Link to site";
+      }
+    }
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-enterprise.yang b/config-models/aether-2.0.x/files/yang/onf-enterprise.yang
new file mode 100755
index 0000000..16ad5f9
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-enterprise.yang
@@ -0,0 +1,75 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-enterprise {
+  namespace "http://opennetworking.org/aether/enterprise";
+  prefix ent;
+
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types { prefix at; }
+  import onf-connectivity-service { prefix cs; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description
+    "An Aether Enterprise is an administration entity that
+     has ownership of resrouces.";
+
+  revision "2021-06-02" {
+    description "An Aether Enterprise. Used to distinguish ownership of devices and other resources as well as a domain of configuration.";
+    reference "RFC 6087";
+  }
+
+  typedef enterprise-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+   description "The typedef for enterprise-id";
+  }
+
+  container enterprise {
+    description "The top level container";
+
+    list enterprise {
+      key "id";
+      description
+        "List of enterprises";
+
+      leaf id {
+        type enterprise-id;
+        description "ID for this enterprise.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this enterprise";
+      }
+
+      list connectivity-service {
+        key "connectivity-service";
+        leaf connectivity-service {
+          type leafref {
+            path "/cs:connectivity-service/cs:connectivity-service/cs:id";
+          }
+          description
+            "Link to connectivity services where configuration should be pushed for this enterprise's devices";
+        }
+        leaf enabled {
+          type boolean;
+          default true;
+          description
+            "Allow or disallow pushes to this connectivity service";
+        }
+        description "The list for connectivity-service";
+      }
+    }
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-ip-domain.yang b/config-models/aether-2.0.x/files/yang/onf-ip-domain.yang
new file mode 100755
index 0000000..e896cc5
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-ip-domain.yang
@@ -0,0 +1,104 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-ip-domain {
+  namespace "http://opennetworking.org/aether/ip-domain";
+  prefix ipd;
+
+  import ietf-inet-types { prefix inet; }
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types { prefix at; }
+  import onf-enterprise{ prefix ent; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description
+    "An Aether IP-Domain. This is a list of available subnets
+     that may be assigned to UEs, as well as DNS servers and other
+     metadata";
+
+  revision "2021-06-02" {
+    description "An Aether IP and Domain Specification";
+    reference "RFC 6087";
+  }
+
+  typedef ip-domain-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+    description "The typedef for ip-domain-id";
+  }
+
+  container ip-domain {
+    description "The top level container";
+
+    list ip-domain {
+      key "id";
+      description
+        "List of ip domains";
+
+      leaf id {
+        type ip-domain-id;
+        description "ID for this ip domain.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf dnn {
+        type at:dnn;
+        mandatory true;
+        description "DNN/APN";
+      }
+
+      leaf dns-primary {
+        type inet:ip-address;
+        description "primary dns server name";
+      }
+
+      leaf dns-secondary {
+        type inet:ip-address;
+        description "secondary dns server name";
+      }
+
+      // Note: Cannot use a subnet as a list key. Dropped support from a
+      // list of subnets to a single subnet. Revisit in the future.
+      leaf subnet {
+        type inet:ipv4-prefix;
+        mandatory true;
+        description "subnet to allocate ip addresses from";
+      }
+
+      leaf admin-status {
+        type at:admin-status;
+        description "administrative status";
+      }
+
+      leaf mtu {
+        type at:mtu;
+        description "maximum transmission unit";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this ip domain";
+      }
+
+      // Ip-Domain is always owned by an Enterprise, because it contains
+      // IP addresses relative to that Enterprise.
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this IP-Domain";
+      }
+    }
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-site.yang b/config-models/aether-2.0.x/files/yang/onf-site.yang
new file mode 100755
index 0000000..b5f22c4
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-site.yang
@@ -0,0 +1,172 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-site {
+  namespace "http://opennetworking.org/aether/site";
+  prefix st;
+
+  import ietf-inet-types { prefix inet; }
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types{ prefix at; }
+  import onf-enterprise{ prefix ent; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description
+    "An Aether site is a location where resources are deployed.";
+
+  revision "2021-09-10" {
+    description "An Aether Site.";
+    reference "RFC 6087";
+  }
+
+  typedef site-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+    description "The typedef for site-id";
+  }
+
+  container site {
+    description "The top level container";
+
+    list site {
+      key "id";
+      description
+        "List of site";
+
+      leaf id {
+        type site-id;
+        description "ID for this site.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      list small-cell {
+        key "small-cell-id";
+        leaf small-cell-id {
+          type yg:yang-identifier;
+          description
+            "Id of small cell";
+        }
+        leaf address {
+          type inet:host;
+          description
+            "Address of small cell";
+        }
+        leaf tac {
+          type at:tac;
+          mandatory true;
+          description
+              "Type Allocation Code";
+        }
+        leaf enable {
+          type boolean;
+          default true;
+          description
+            "Enable this small cell";
+        }
+        leaf display-name {
+          type string {
+              length 1..80;
+          }
+          description "display name to use in GUI or CLI";
+        }
+        description
+          "List of small cell addresses";
+      }
+
+      container monitoring {
+        leaf edge-cluster-prometheus-url {
+          type inet:uri;
+          description
+            "URL of edge cluster prometheus";
+        }
+        leaf edge-monitoring-prometheus-url {
+          type inet:uri;
+          description
+            "URL of monitoring prometheus";
+        }
+        list edge-device {
+          key "edge-device-id";
+          leaf edge-device-id {
+            type yg:yang-identifier;
+            description
+              "Id of edge monitoring device";
+          }
+          leaf display-name {
+            type string {
+                length 1..80;
+            }
+            description "display name to use in GUI or CLI";
+          }
+          leaf description {
+            type at:description;
+            description "description of this site";
+          }
+          description
+            "List of edge monitoring devices";
+        }
+        description
+            "container for monitoring";
+      }
+
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this site";
+      }
+
+      container imsi-definition {
+        leaf mcc {
+          type at:mcc;
+          mandatory true;
+          description "mobile country code";
+        }
+        leaf mnc {
+          type at:mnc;
+          mandatory true;
+          description "mobile network code";
+        }
+        leaf enterprise {
+          type at:ent;
+          mandatory true;
+          description "enterprise-specific identifier";
+        }
+        leaf format {
+          type string {
+            length 15;
+          }
+          mandatory true;
+          description "IMSI format specifier, describes how fields are packed into an IMSI. Must be exactly 15 characters long. For example, CCCNNNEEESSSSSS.";
+          // Format specifiers:
+          //   C = MCC
+          //   N = MNC
+          //   E = Enterprise
+          //   0 = Forced Zero
+          //   S = Subscriber ID
+          // default is
+          //   3 digit MCC
+          //   3 digit MNC
+          //   3 digit enterprise ID
+          //   5 digit subscriber ID
+        }
+        description "container for imsi-defination";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this site";
+      }
+    }
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-template.yang b/config-models/aether-2.0.x/files/yang/onf-template.yang
new file mode 100755
index 0000000..bbd94ef
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-template.yang
@@ -0,0 +1,104 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-template {
+  namespace "http://opennetworking.org/aether/template";
+  prefix tp;
+
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types{ prefix at; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description
+    "The aether vcs-template holds common parameters used
+     by a virtual connectivity service. Templates are used to
+     populate a VCS.";
+
+  revision "2021-09-10" {
+    description "An Aether Virtual Cellular Service Template";
+    reference "RFC 6087";
+  }
+
+  typedef template-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+    description "The typedef for template-id";
+  }
+
+  container template {
+    description "The top level container";
+
+    list template {
+      key "id";
+      description
+        "List of vcs templates";
+
+      leaf id {
+        type template-id;
+        description "ID for this vcs template.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf sst {
+        type at:sst;
+        description "Slice/Service type";
+      }
+
+      leaf sd {
+        type at:sd;
+        description "Slice differentiator";
+      }
+
+      container slice {
+        description "Per-Slice QOS Settings";
+        container mbr {
+          description "Maximum bitrate";
+          leaf uplink {
+            type at:bitrate;
+            units bps;
+            description "Per-Slice MBR uplink data rate in bps";
+          }
+
+          leaf downlink {
+            type at:bitrate;
+            units bps;
+            description "Per-Slice MBR downlink data rate in bps";
+          }
+
+          leaf uplink-burst-size {
+            type at:burst;
+            units bytes;
+            description "Per-Slice Uplink burst size";
+          }
+
+          leaf downlink-burst-size {
+            type at:burst;
+            units bytes;
+            description "Per-Slice Downlink burst size";
+          }
+        }
+      }
+
+      leaf default-behavior {
+        type at:behavior;
+        mandatory true;
+        description
+          "Default behavior if no filter rules match";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this vcs template";
+      }
+    }
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-traffic-class.yang b/config-models/aether-2.0.x/files/yang/onf-traffic-class.yang
new file mode 100755
index 0000000..a592267
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-traffic-class.yang
@@ -0,0 +1,76 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-traffic-class {
+  namespace "http://opennetworking.org/aether/traffic-class";
+  prefix tp;
+
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types{ prefix at; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description
+    "The aether traffic class associates qos constants
+     with a named class of service";
+
+  revision "2021-09-10" {
+    description "An Aether Traffic Class";
+    reference "RFC 6087";
+  }
+
+  typedef traffic-class-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+    description "The typedef for traffic-class-id";
+  }
+
+  container traffic-class {
+    description "The top level container";
+
+    list traffic-class {
+      key "id";
+      description
+        "List of traffic class";
+
+      leaf id {
+        type traffic-class-id;
+        description "ID for this traffic class.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf arp {
+        type at:arp;
+        description "Allocation and Retention Priority. 1 is the highest. 15 is the lowest.";
+      }
+
+      leaf qci {
+        type at:qci;
+        description "QOS Class Identifier";
+      }
+
+      leaf pelr {
+        type at:pelr;
+        description "PELR exponent";
+      }
+
+      leaf pdb {
+        type at:pdb;
+        description "PDB";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this traffic class";
+      }
+    }
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-upf.yang b/config-models/aether-2.0.x/files/yang/onf-upf.yang
new file mode 100755
index 0000000..5c8be50
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-upf.yang
@@ -0,0 +1,98 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-upf {
+  namespace "http://opennetworking.org/aether/upf";
+  prefix upf;
+
+  import ietf-inet-types { prefix inet; }
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types { prefix at; }
+  import onf-enterprise{ prefix ent; }
+  import onf-site{ prefix st; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description "A Aether UPF List is a named User Plane Function.";
+
+  revision "2021-09-16" {
+    description "An Aether User Plane Function";
+    reference "RFC 6087";
+  }
+
+  typedef upf-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+   description "The typedef for upf-id";
+  }
+
+  container upf {
+    description "The top level container";
+
+    list upf {
+      key "id";
+      description
+        "A list of named upfs.";
+
+      leaf id {
+        type upf-id;
+        description "ID for this upf.";
+      }
+
+      leaf address {
+        type inet:host;
+        mandatory true;
+        description
+          "Address of UPF";
+      }
+
+      leaf port {
+        type inet:port-number;
+        mandatory true;
+        description
+            "Port for UPF";
+      }
+
+      leaf config-endpoint {
+        type inet:uri;
+        description "url for configuring the UPF";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this UPF";
+      }
+
+      // UPFs are always owned by an Enterprise, since they typically exist on the
+      // Enterprise's edge.
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this Access Point List";
+      }
+
+      // UPFs always reside at a site, as the exist on physical infrastructure. GUI
+      // will ensure that the tuple (DG, VCS, UPF) all exist on the same site.
+      leaf site {
+        type leafref {
+          path "/st:site/st:site/st:id";
+        }
+        mandatory true;
+        description
+          "Link to site";
+      }
+    }
+  }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-vcs.yang b/config-models/aether-2.0.x/files/yang/onf-vcs.yang
new file mode 100755
index 0000000..c275565
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-vcs.yang
@@ -0,0 +1,187 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-vcs {
+  namespace "http://opennetworking.org/aether/vcs";
+  prefix sl;
+
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types{ prefix at; }
+  import onf-application{ prefix app; }
+  import onf-device-group{ prefix dg; }
+  import onf-enterprise{ prefix ent; }
+  import onf-upf { prefix upf; }
+  import onf-site{ prefix st; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description
+    "An Aether Virtual Cellular Service (VCS) is
+     used to connect devices with applications";
+
+  revision "2021-09-10" {
+    description "An Aether Virtual Cellular Service";
+    reference "RFC 6087";
+  }
+
+  typedef vcs-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+    description "The typedef for vcs-id";
+  }
+
+  container vcs {
+    description "The top level container";
+
+    list vcs {
+      key "id";
+      description
+        "List of virtual cellular services";
+
+      leaf id {
+        type vcs-id;
+        description "ID for this vcs.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      list device-group {
+        key "device-group";
+        leaf device-group {
+          type leafref {
+            path "/dg:device-group/dg:device-group/dg:id";
+          }
+          description
+            "Link to device group";
+        }
+        leaf enable {
+          type boolean;
+          default true;
+          description
+            "Enable this device group";
+        }
+        description
+          "A list of device groups. Groups will only participate in
+           the VCS if the enable field is set to True";
+      }
+
+      leaf default-behavior {
+        type at:behavior;
+        mandatory true;
+        description
+          "Default behavior if no filter rules match";
+      }
+
+      list filter {
+        key "application";
+        leaf application {
+          type leafref {
+            path "/app:application/app:application/app:id";
+          }
+          mandatory true;
+          description
+            "Link to application";
+        }
+        leaf priority {
+          type at:priority;
+          default 0;
+          description
+            "Priority of this application";
+        }
+        leaf allow {
+          type boolean;
+          default true;
+          description
+            "Allow or deny this application";
+        }
+        description
+          "A list of applications to allow and/or deny. Rules are executed in
+           priority order. The first rule to match will determine the fate
+           of the packet.";
+      }
+
+      leaf upf {
+        type leafref {
+          path "/upf:upf/upf:upf/upf:id";
+        }
+        description
+          "Link to user plane that implements this vcf";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this vcs";
+      }
+
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this VCS";
+      }
+
+      leaf site {
+        type leafref {
+          path "/st:site/st:site/st:id";
+        }
+	mandatory true;
+        description
+          "Link to site where this VCS is deployed";
+      }
+
+      // the following are populated from the template
+      leaf sst {
+        type at:sst;
+        mandatory true;
+        description "Slice/Service type. Immutable.";
+      }
+
+      leaf sd {
+        type at:sd;
+        mandatory true;
+        description "Slice differentiator. Immutable.";
+      }
+
+      container slice {
+        description "Per-Slice QOS Settings";
+        container mbr {
+          description "Maximum bitrate";
+          leaf uplink {
+            type at:bitrate;
+            units bps;
+            description "Per-Slice MBR uplink data rate in bps";
+          }
+
+          leaf downlink {
+            type at:bitrate;
+            units bps;
+            description "Per-Slice MBR downlink data rate in bps";
+          }
+
+          leaf uplink-burst-size {
+            type at:burst;
+            units bytes;
+            description "Per-Slice Uplink burst size";
+          }
+
+          leaf downlink-burst-size {
+            type at:burst;
+            units bytes;
+            description "Per-Slice Downlink burst size";
+          }
+        }
+      }
+
+      // end of items populated from the template
+    }
+  }
+}
