diff --git a/release/1.5.rst b/release/1.5.rst
index 14c4dae..653e31f 100644
--- a/release/1.5.rst
+++ b/release/1.5.rst
@@ -4,46 +4,217 @@
 Highlights
 ----------
 
-The focus of this release is support for...
+The focus of this release is an update of Aether to support the 5G SD-Core.
+This included a redesign of Aether modeling and workflows, integration of the
+5G SD-Core into Aether, and an update of the 4G SD-Core to be compliant with
+the 5G Aether API. 4G Small Cells are readily available and deployed at
+multiple Aether installations. The 5G Core is part of a Deutsche Telekom SD-RAN
+trial and is being used with 5G-SA disaggregated RAN components (CU/DU/RU).
+
+Deployment of Aether has been demonstrated on Anthos and on Elastic Kubernetes
+Service. Persistent test deployments are now maintained by ONF to further
+evaluate Aether functionality on those platforms.
+
 
 New Features and Improvements
 -----------------------------
 
+4G and 5G Connectivity Service
+""""""""""""""""""""""""""""""
 
-Development and Deployment Changes
-----------------------------------
+Aether supports mobile/cellular connectivity using both the 4G and the 5G
+SD-Core. The Aether ROC may be used with both cores simultaneously. The 4G
+modeling used by Aether-1.0 has been replaced with newer modeling that unifies
+the 4G and 5G cores in a single modeling abstraction.
 
-Support for ...
+Device Grouping and Network Slicing
+"""""""""""""""""""""""""""""""""""
+
+Aether supports a Network Slicing abstraction where similar connected devices
+can be aggregated together into a Device-Group, and different Device Groups can
+be allocated to different network slices (Virtual Connectivity Service - VCS).
+
+Grouping connected devices affords ease of management - devices in the same
+group are configured together and afforded the same treatment in the network.
+Separating device-groups into different slices affords isolation between
+groups. The data plane connectivity for different slices are realized through
+different User Plane Functions (UPFs).
+
+Furthermore, Aether supports Access Control - devices not part of any
+Device-Group are rejected by the network.
+
+Aether Portal
+"""""""""""""
+
+The Aether Portal is a modern secure Single Page Application implemented in
+Angular. The portal integrates both control of the Aether Network and metrics
+reported by Aether components in a single pane of glass with multi-tenancy
+separation. The portal allows complex control operations to be batched together
+as one transaction into a convenient “basket” and then atomically committed to
+the configuration. All of the functions of the Portal are also available on a
+secure REST API, with an OpenAPI 3 schema.
+
+Role-Based Access Control
+"""""""""""""""""""""""""
+
+The Aether control API supports role-based access control, together with
+external authentication using OpenID Connect. These access controls are used in
+the Aether Portal to limit which enterprises a portal user is allowed to view
+or modify. The Aether Portal supports multiple enterprises simultaneously.
+
+Flexible Kubernetes Deployment Options
+""""""""""""""""""""""""""""""""""""""
+
+Fully managed Aether deployment using Rancher is officially supported. Together
+with Rancher, Aether allows configuration, management, and monitoring of
+Kubernetes clusters. These clusters can be used to host the Aether Connectivity
+Service as well as customer edge applications. Support for other managed
+Kubernetes services such as Google Anthos or Amazon Elastic Kubernetes Service
+should be considered beta and not officially supported.
+
+Testing
+-------
+
+Aether uses automated testing based on Jenkins and Robot Framework. The tests
+performed are described below.
+
+SD-Core Tests
+"""""""""""""
+
+* 4G
+
+  * Functional Coverage: Attach,detach, dataplane traffic, handover, TAU,
+    paging, error scenarios, few failure/restart of network functions
+
+  * Scale and Performance tests utilizing BESS
+
+* 5G
+
+  * Functional Coverage: register, deregister, dataplane traffic scenarios,
+    handover, TAU, DDN, few error scenarios, few failure/restart of network
+    functions
+
+  * Scale tests (BESS)
+
+Jenkins jobs for functional and scale tests can be found on `Aether Jenkins -
+SD-Core System Tests
+<https://jenkins.aetherproject.org/view/SD%20Core%20System%20Tests/>`_
+
+ROC
+"""
+
+  * Functional API and GUI test coverage
+
+Jenkins jobs: `Aether Jenkins - ROC System Tests
+<https://jenkins.aetherproject.org/view/ROC%20System%20Tests/>`_
 
 
-Testing Improvements
---------------------
+System Tests
+""""""""""""
 
+* 4G and 5G Sanity Test coverage:
 
-Certification Program
----------------------
+  * Configure ROC with related models for 4G and 5G
+  * Validate for attach/register UE, pings, detach/degister UE
+
+Jenkins Jobs: `Aether Jenkins - Aether System Tests
+<https://jenkins.aetherproject.org/view/Aether%20System%20Tests/>`_
+
+Documentation
+-------------
+
+Aether documentation is available at `docs.aetherproject.org
+<https://docs.aetherproject.org>`_
 
 
 Known Issues and Limitations
 ----------------------------
 
+* A given UE may participate in a 4G core or a 5G core, but not both.
 
+* 4G UEs may each participate in a single DeviceGroup, and 4G DeviceGroups may
+  each participate in a single VCS. This restriction does not apply to 5G UEs.
+
+* Application filtering is modeled in the API and the GUI, but application
+  filtering is not active in the data plane.
+
+* Disabling/deleting a device group from a VCS does not restrict UE from
+  getting attached to the network [SDCORE-467]
 
 Component Versions in the 1.5 Release
 -------------------------------------
 
-
 Aether ROC
-""""""""""
 
+* aether-roc-api
 
-ONOS
-""""
+* aether-roc-gui
 
+* atomix
 
-SD-Core
-"""""""
+* onos-config
 
+* onos-topo
+
+* sdcore-adapter
+
+4G Core
+
+* cassandra
+
+* config4g
+
+* hss
+
+* mme
+
+* pcrf
+
+* simapp
+
+* spgwc
+
+* upf
+
+5G Core
+
+* amf
+
+* ausf
+
+* mongodb
+
+* nrf
+
+* nssf
+
+* pcf
+
+* simapp
+
+* smf
+
+* udm
+
+* udr
+
+* upf
+
+* webui
 
 Helm Chart Versions
--------------------
+
+* aether-roc-umbrella:
+
+* config-models/aether-3.x:
+
+* sdcore-helm-chart: 0.6.2
+
+* omec-control-plane: 0.6.25
+
+* omec-sub-provision: 0.0.6
+
+* 5g-control-plane: 0.2.21
+
+* omec-user-plane: 0.3.36
+
