diff --git a/config-models/aether-3.x/Chart.yaml b/config-models/aether-3.x/Chart.yaml
new file mode 100644
index 0000000..79c5a63
--- /dev/null
+++ b/config-models/aether-3.x/Chart.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: config-model-aether
+version: 3.0.13
+kubeVersion: ">=1.18.0"
+appVersion: 3.0.0
+description: Aether config model
+keywords:
+  - onos
+  - sdn
+  - config
+home: https://onosproject.org
+maintainers:
+  - name: ONOS Support
+    email: support@opennetworking.org
diff --git a/config-models/aether-3.x/files/aether-3.0.0.tree b/config-models/aether-3.x/files/aether-3.0.0.tree
new file mode 100644
index 0000000..f23f176
--- /dev/null
+++ b/config-models/aether-3.x/files/aether-3.0.0.tree
@@ -0,0 +1,140 @@
+module: ap-list
+  +--rw ap-list
+     +--rw ap-list* [id]
+        +--rw id               ap-list-id
+        +--rw access-points* [address]
+        |  +--rw address    inet:host
+        |  +--rw tac        at:tac
+        |  +--rw enable?    boolean
+        +--rw display-name?    string
+        +--rw description?     at:description
+        +--rw enterprise       -> /ent:enterprise/enterprise/id
+
+module: application
+  +--rw application
+     +--rw application* [id]
+        +--rw id              application-id
+        +--rw display-name?   string
+        +--rw description?    at:description
+        +--rw endpoint* [name]
+        |  +--rw name          string
+        |  +--rw address       ietf:host
+        |  +--rw port-start    ietf:port-number
+        |  +--rw port-end?     ietf:port-number
+        |  +--rw protocol?     at:protocol
+        +--rw enterprise      -> /ent:enterprise/enterprise/id
+
+module: connectivity-service
+  +--rw connectivity-service
+     +--rw connectivity-service* [id]
+        +--rw id                  connectivity-service-id
+        +--rw display-name?       string
+        +--rw description?        at:description
+        +--rw spgwc-endpoint?     inet:uri
+        +--rw hss-endpoint?       inet:uri
+        +--rw pcrf-endpoint?      inet:uri
+        +--rw core-5g-endpoint?   inet:uri
+
+module: device-group
+  +--rw device-group
+     +--rw device-group* [id]
+        +--rw id              device-group-id
+        +--rw description?    at:description
+        +--rw display-name?   string
+        +--rw imsis* [name]
+        |  +--rw name               string
+        |  +--rw imsi-range-from?   uint64
+        |  +--rw imsi-range-to?     uint64
+        +--rw ip-domain?      -> /ipd:ip-domain/ip-domain/id
+        +--rw site            -> /st:site/site/id
+
+module: 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: 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: site
+  +--rw site
+     +--rw site* [id]
+        +--rw id                 site-id
+        +--rw display-name?      string
+        +--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: template
+  +--rw template
+     +--rw template* [id]
+        +--rw id               template-id
+        +--rw display-name?    string
+        +--rw sst?             at:sst
+        +--rw sd?              at:sd
+        +--rw uplink?          uint32
+        +--rw downlink?        uint32
+        +--rw traffic-class?   -> /tc:traffic-class/traffic-class/id
+        +--rw description?     at:description
+
+module: traffic-class
+  +--rw traffic-class
+     +--rw traffic-class* [id]
+        +--rw id              traffic-class-id
+        +--rw display-name?   string
+        +--rw pelr?           at:pelr
+        +--rw pdb?            at:pdb
+        +--rw qci?            at:qci
+        +--rw description?    at:description
+
+module: upf
+  +--rw upf
+     +--rw upf* [id]
+        +--rw id              upf-id
+        +--rw address         inet:host
+        +--rw port            inet:port-number
+        +--rw display-name?   string
+        +--rw description?    at:description
+        +--rw enterprise      -> /ent:enterprise/enterprise/id
+
+module: 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 template?        -> /vt:template/template/id
+        +--rw application* [application]
+        |  +--rw application    -> /app:application/application/id
+        |  +--rw allow?         boolean
+        +--rw upf?             -> /upf:upf/upf/id
+        +--rw ap?              -> /apl:ap-list/ap-list/id
+        +--rw description?     at:description
+        +--rw enterprise       -> /ent:enterprise/enterprise/id
+        +--rw sst              at:sst
+        +--rw sd               at:sd
+        +--rw uplink?          uint32
+        +--rw downlink?        uint32
+        +--rw traffic-class    -> /tc:traffic-class/traffic-class/id
diff --git a/config-models/aether-3.x/files/yang/aether-types.yang b/config-models/aether-3.x/files/yang/aether-types.yang
new file mode 100755
index 0000000..fedbdc6
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/aether-types.yang
@@ -0,0 +1,109 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module 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-06-02" {
+    description "Aether Base Types";
+    reference "RFC 6087";
+  }
+
+  typedef mcc {
+      type string {
+        pattern '[0-9]{3}';
+      }
+  }
+
+  typedef mnc {
+      type string {
+        pattern '[0-9]{2,3}';
+      }
+  }
+
+  typedef tac {
+      type string {
+        length 4..8;
+        pattern '[0-9A-F\.]*';
+      }
+  }
+
+  typedef ent {
+      type uint32 {
+        range 0..999;
+      }
+  }  
+
+  typedef dnn {
+      type string {
+        length 1..32;
+      }
+  }  
+
+  typedef sst {
+      type uint8 {
+        range 1..255;
+      }
+  }
+
+  typedef sd {
+      type uint32 {
+        range 0..16777215;
+      }
+  }
+
+  typedef qci {
+      type uint8 {
+        range 1..32;
+      }
+  }
+
+  typedef pelr {
+      type int8 {
+        range 0..10;
+      }
+  }
+
+  typedef pdb {
+      type uint16 {
+        range 0..1000;
+      }
+  }  
+
+  // "TCP" or "UDP"
+  typedef protocol {
+      type string {
+        length 3;
+        pattern "TCP|UDP";
+      }
+      default "TCP";
+  }
+
+  // "ENABLE" | "MAINTENTANCE" | "DISABLE"
+  typedef admin-status {
+      type string {
+        length 0..16;
+        pattern "ENABLE|MAINTENANCE|DISABLE";
+      }
+      default "ENABLE";
+  }  
+
+  typedef mtu {
+      type inet:port-number;
+      default 1492;
+  }
+
+  typedef description {
+    type string {
+      length 1..1024;
+    }
+  }
+}
diff --git a/config-models/aether-3.x/files/yang/ap-list.yang b/config-models/aether-3.x/files/yang/ap-list.yang
new file mode 100755
index 0000000..3c1a759
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/ap-list.yang
@@ -0,0 +1,91 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module ap-list {
+  namespace "http://opennetworking.org/aether/ap-list";
+  prefix apl;
+
+  import ietf-inet-types { prefix inet; }
+  import aether-types { prefix at; }
+  import enterprise{ prefix ent; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "An Aether AP List is a named list of access points.";
+
+  revision "2021-06-02" {
+    description "An Aether Access Point List";
+    reference "RFC 6087";
+  }
+
+  typedef ap-list-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  container ap-list {
+    description "The top level container";
+
+    list ap-list {
+      key "id";
+      description
+        "A list of named ap-lists.";
+
+      leaf id {
+        type ap-list-id;
+        description "ID for this ap-list.";
+      }
+
+      list access-points {
+        key "address";
+        leaf address {
+          type inet:host;
+          description
+            "Address of access point";
+        }
+        leaf tac {
+          type at:tac;
+          mandatory true;
+          description
+              "Type Allocation Code";
+        }        
+        leaf enable {
+          type boolean;
+          default true;
+          description
+            "Enable this access point";
+        }
+        description
+          "List of access point addresses";
+      }        
+
+      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 ap-list";
+      }
+
+      // Access point lists are always owned by an Enterprise, since they typically exist on the
+      // Enterprise's edge. An ApList is not owned by Site, to cover the case where a ApList may
+      // include access points that span multiple sites.
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this Access Point List";
+      }       
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/application.yang b/config-models/aether-3.x/files/yang/application.yang
new file mode 100755
index 0000000..2f1a4fc
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/application.yang
@@ -0,0 +1,99 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module application {
+  namespace "http://opennetworking.org/enterprise/application";
+  prefix app;
+
+  import ietf-inet-types{ prefix ietf; }
+  import aether-types{ prefix at; }
+  import enterprise{ prefix ent; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "An Aether Application is an application that UE devices may
+     connect to. Includes a set of endpoints where services are
+     provided.";
+
+  revision "2021-06-02" {
+    description "Aether Application.";
+    reference "RFC 6087";
+  }
+
+  typedef application-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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";
+      }
+
+      list endpoint {
+        key "name";
+        max-elements 1;
+        leaf name {
+          type string;
+          description
+              "Name of this endpoint";
+        }
+        leaf address {
+          type ietf:host;
+          mandatory true;
+          description
+              "Address of this endpoint. Either a hostname, and IP, or a subnet.";
+        }
+        leaf port-start {
+          type ietf:port-number;
+          mandatory true;
+          description
+              "First port in range";
+        }
+        leaf port-end {
+          type ietf:port-number;
+          description
+              "Last port in range";
+        }
+        leaf protocol {
+          type at:protocol;
+          description
+              "Name of this 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-3.x/files/yang/connectivity-service.yang b/config-models/aether-3.x/files/yang/connectivity-service.yang
new file mode 100755
index 0000000..f3cc3fc
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/connectivity-service.yang
@@ -0,0 +1,76 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module connectivity-service {
+  namespace "http://opennetworking.org/aether/connectivity-service";
+  prefix cs;
+
+  import aether-types { prefix at; }
+  import ietf-inet-types { prefix inet; }
+  import ietf-yang-types{ prefix yg; }
+
+  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-06-02" {
+    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;
+        }
+  }
+
+  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 spgwc-endpoint {
+        type inet:uri;
+        description "url of the spgwc service";
+      }
+
+      leaf hss-endpoint {
+        type inet:uri;
+        description "url of the hss service";
+      }
+
+      leaf pcrf-endpoint {
+        type inet:uri;
+        description "url of the pcrf service";
+      }
+
+      leaf core-5g-endpoint {
+        type inet:uri;
+        description "url of the 5g core";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/device-group.yang b/config-models/aether-3.x/files/yang/device-group.yang
new file mode 100755
index 0000000..e9c1590
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/device-group.yang
@@ -0,0 +1,99 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module device-group {
+  namespace "http://opennetworking.org/aether/device-group";
+  prefix dg;
+
+  import aether-types { prefix at; }
+  import ip-domain{ prefix ipd; }
+  import site{ prefix st; }
+  import ietf-yang-types{ prefix yg; }
+
+  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;
+        }
+  }  
+
+  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 "name";
+        leaf name {
+          type string;
+        }
+        leaf imsi-range-from {
+          type uint64;
+        }
+        leaf imsi-range-to {
+          type uint64;
+        }
+        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";
+      }
+
+      leaf site {
+        type leafref {
+          path "/st:site/st:site/st:id";
+        }
+        mandatory true;
+        description
+          "Link to site";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/enterprise.yang b/config-models/aether-3.x/files/yang/enterprise.yang
new file mode 100755
index 0000000..4d91f47
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/enterprise.yang
@@ -0,0 +1,73 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module enterprise {
+  namespace "http://opennetworking.org/aether/enterprise";
+  prefix ent;
+
+  import aether-types { prefix at; }
+  import connectivity-service { prefix cs; }
+  import ietf-yang-types{ prefix yg; }
+
+  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;
+        }
+  }
+
+  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";
+        }
+      }              
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/ietf-inet-types.yang b/config-models/aether-3.x/files/yang/ietf-inet-types.yang
new file mode 100644
index 0000000..eacefb6
--- /dev/null
+++ b/config-models/aether-3.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 {
+      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]\.?)'
+      + '|\.';
+      length "1..253";
+    }
+    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-3.x/files/yang/ietf-yang-types.yang b/config-models/aether-3.x/files/yang/ietf-yang-types.yang
new file mode 100644
index 0000000..ee58fa3
--- /dev/null
+++ b/config-models/aether-3.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-3.x/files/yang/ip-domain.yang b/config-models/aether-3.x/files/yang/ip-domain.yang
new file mode 100755
index 0000000..7f2bf73
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/ip-domain.yang
@@ -0,0 +1,102 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module ip-domain {
+  namespace "http://opennetworking.org/aether/ip-domain";
+  prefix ipd;
+
+  import ietf-inet-types { prefix inet; }
+  import aether-types { prefix at; }
+  import enterprise{ prefix ent; }
+  import ietf-yang-types{ prefix yg; }
+
+  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;
+        }
+  }
+
+  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;
+        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-3.x/files/yang/site.yang b/config-models/aether-3.x/files/yang/site.yang
new file mode 100755
index 0000000..89f8fc7
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/site.yang
@@ -0,0 +1,100 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module site {
+  namespace "http://opennetworking.org/aether/site";
+  prefix st;
+
+  import aether-types{ prefix at; }
+  import enterprise{ prefix ent; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "An Aether site is a location where resources are deployed.";
+
+  revision "2021-06-02" {
+    description "An Aether Site.";
+    reference "RFC 6087";
+  }
+
+  typedef site-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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";
+      }
+
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }              
+        description
+          "Link to enterprise that owns this site";
+        mandatory true;          
+      }
+
+      container imsi-definition {
+        leaf mcc {
+          type at:mcc;
+          description "mobile country code";
+          mandatory true;
+        }
+        leaf mnc {
+          type at:mnc;
+          description "mobile network code";
+          mandatory true;
+        }
+        leaf enterprise {
+          type at:ent;
+          description "enterprise-specific identifier";
+          mandatory true;
+        }
+        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
+        }
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this site";
+      }         
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/template.yang b/config-models/aether-3.x/files/yang/template.yang
new file mode 100755
index 0000000..ea040e7
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/template.yang
@@ -0,0 +1,85 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module template {
+  namespace "http://opennetworking.org/aether/template";
+  prefix tp;
+
+  import aether-types{ prefix at; }
+  import traffic-class{ prefix tc; }
+  import ietf-yang-types{ prefix yg; }
+
+  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-06-02" {
+    description "An Aether Virtual Cellular Service Template";
+    reference "RFC 6087";
+  }
+
+  typedef template-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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";
+      }
+
+      leaf uplink {
+        type uint32;
+        description "Uplink data rate in mbps";
+      }
+
+      leaf downlink {
+        type uint32;
+        description "Downlink data rate in mbps";
+      }
+
+      leaf traffic-class {
+        type leafref {
+          path "/tc:traffic-class/tc:traffic-class/tc:id";
+        }          
+        description
+          "Link to traffic class";
+      } 
+
+      leaf description {
+        type at:description;
+        description "description of this vcs template";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/traffic-class.yang b/config-models/aether-3.x/files/yang/traffic-class.yang
new file mode 100755
index 0000000..636c816
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/traffic-class.yang
@@ -0,0 +1,70 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module traffic-class {
+  namespace "http://opennetworking.org/aether/traffic-class";
+  prefix tp;
+
+  import aether-types{ prefix at; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "The aether traffic class associates qos constants
+     with a named class of service";
+
+  revision "2021-06-02" {
+    description "An Aether Traffic Class";
+    reference "RFC 6087";
+  }
+
+  typedef traffic-class-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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 pelr {
+        type at:pelr;
+        description "PELR exponent";
+      }
+
+      leaf pdb {
+        type at:pdb;
+        description "PDB";
+      }        
+
+      leaf qci {
+        type at:qci;
+        description "QCI";
+      }      
+
+      leaf description {
+        type at:description;
+        description "description of this traffic class";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/upf.yang b/config-models/aether-3.x/files/yang/upf.yang
new file mode 100755
index 0000000..1c92214
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/upf.yang
@@ -0,0 +1,81 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module upf {
+  namespace "http://opennetworking.org/aether/upf";
+  prefix upf;
+
+  import aether-types { prefix at; }
+  import ietf-inet-types { prefix inet; }
+  import enterprise{ prefix ent; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description "A Aether UPF List is a named User Plane Function.";
+
+  revision "2021-06-02" {
+    description "An Aether User Plane Function";
+    reference "RFC 6087";
+  }
+
+  typedef upf-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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 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. TODO: Consider whether they should be owned by a Site
+      // instead of Enterprise.
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this Access Point List";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/vcs.yang b/config-models/aether-3.x/files/yang/vcs.yang
new file mode 100755
index 0000000..ab4e370
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/vcs.yang
@@ -0,0 +1,171 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module vcs {
+  namespace "http://opennetworking.org/aether/vcs";
+  prefix sl;
+
+  import template{ prefix vt; }
+  import upf { prefix upf; }
+  import ap-list{ prefix apl; }    
+  import application{ prefix app; }
+  import aether-types{ prefix at; }
+  import device-group{ prefix dg; }
+  import traffic-class{ prefix tc; }
+  import ietf-yang-types{ prefix yg; }
+  import enterprise{ prefix ent; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "An Aether Virtual Cellular Service (VCS) is
+     used to connect UE devices with applications";
+
+  revision "2021-06-02" {
+    description "An Aether Virtual Cellular Service";
+    reference "RFC 6087";
+  }
+
+  typedef vcs-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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 template {
+        type leafref {
+          path "/vt:template/vt:template/vt:id";
+        }          
+        description
+          "Link to user vcs template that was used to initialize
+           this VCS";
+      }
+
+      list application {
+        key "application";   
+        leaf application {
+          type leafref {
+            path "/app:application/app:application/app:id";
+          }
+          mandatory true;
+          description
+            "Link to application";
+        }
+        leaf allow {
+          type boolean;
+          default true;
+          description
+            "Allow or deny this application";
+        }
+        description
+          "An ordered list of applications to allow and deny. The deny rules
+           will be executed first, followed by the allow rules. The first rule
+           to match is returned. An implicit DENY ALL lies at the end.";
+      }      
+
+      leaf upf {
+        type leafref {
+          path "/upf:upf/upf:upf/upf:id";
+        }          
+        description
+          "Link to user plane that implements this vcf";
+      }
+
+      leaf ap {
+        type leafref {
+          path "/apl:ap-list/apl:ap-list/apl:id";
+        }          
+        description
+          "Link to access-point list";
+      }
+
+      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";
+      }      
+
+      // 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.";
+      }
+
+      leaf uplink {
+        type uint32;
+        description "Uplink data rate in mbps";
+      }
+
+      leaf downlink {
+        type uint32;
+        description "Downlink data rate in mbps";
+      }
+
+      leaf traffic-class {
+        type leafref {
+          path "/tc:traffic-class/tc:traffic-class/tc:id";
+        }
+        mandatory true;
+        description
+          "Link to traffic class";
+      }
+      // end of items populated from the template
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/templates/_helpers.tpl b/config-models/aether-3.x/templates/_helpers.tpl
new file mode 100644
index 0000000..0380f1a
--- /dev/null
+++ b/config-models/aether-3.x/templates/_helpers.tpl
@@ -0,0 +1,52 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "aether.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "aether.fullname" -}}
+{{- if contains "config-model-aether" .Release.Name -}}
+{{- printf "%s-%s" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s-config-model-aether" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "aether.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Common labels
+*/}}
+{{- define "aether.labels" -}}
+helm.sh/chart: {{ include "aether.chart" . }}
+{{ include "aether.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "aether.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "aether.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+}
diff --git a/config-models/aether-3.x/templates/model.yaml b/config-models/aether-3.x/templates/model.yaml
new file mode 100644
index 0000000..949b436
--- /dev/null
+++ b/config-models/aether-3.x/templates/model.yaml
@@ -0,0 +1,70 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: config.onosproject.org/v1beta1
+kind: Model
+metadata:
+  name: {{ template "aether.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    {{- include "aether.labels" . | nindent 4 }}
+spec:
+  plugin:
+    type: Aether
+    version: {{ .Chart.AppVersion | quote }}
+  modules:
+  - name: connectivity-service
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: connectivity-service.yang
+  - name: enterprise
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: enterprise.yang
+# new 5G models
+  - name: aether-types
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: aether-types.yang
+  - name: ap-list
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: ap-list.yang
+  - name: application
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: application.yang
+  - name: device-group
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: device-group.yang
+  - name: ip-domain
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: ip-domain.yang
+  - name: site
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: site.yang
+  - name: upf-list
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: upf.yang
+  - name: vcs
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: vcs.yang
+  - name: template
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: template.yang
+  - name: traffic-class
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: traffic-class.yang    
+  files:
+    {{- range $path, $_  := $.Files.Glob "files/yang/*.yang" }}
+    {{ base $path }}: |
+{{ $.Files.Get $path | indent 6 }}
+    {{- end }}
diff --git a/config-models/aether-3.x/values.yaml b/config-models/aether-3.x/values.yaml
new file mode 100644
index 0000000..2e984ed
--- /dev/null
+++ b/config-models/aether-3.x/values.yaml
@@ -0,0 +1,3 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
