diff --git a/README.md b/README.md
index a25b9d8..248aff3 100644
--- a/README.md
+++ b/README.md
@@ -2,11 +2,12 @@
 
 This guide describes how to install CORD. It identifies a set of
 [prerequisites](prereqs/README.md), and then walks through
-the steps involved in bringing up one of three CORD profiles:
+the steps involved in bringing up the [Platform](platform.md). Once
+the Platform is installed, you are ready to bring up one of the
+available Profiles:
 
-* [R-CORD](./profiles/rcord/install.md)
-* [M-CORD](./profiles/mcord/install.md)
 * [SEBA](./profiles/seba/install.md)
+* [M-CORD](./profiles/mcord/install.md)
 
 If you are anxious to jump straight to a [Quick Start](quickstart.md)
 procedure that brings up an emulated version of CORD running
diff --git a/SUMMARY.md b/SUMMARY.md
index cc83143..3bd98dd 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -5,6 +5,9 @@
     * [Quick Start](quickstart.md)
         * [MacOS](macos.md)
         * [Linux](linux.md)
+
+## Guides
+
 * [Installation Guide](README.md)
     * [Prerequisites](prereqs/README.md)
         * [Hardware Requirements](prereqs/hardware.md)
@@ -17,75 +20,28 @@
             * [Optional Packages](prereqs/optional.md)
                 * [OpenStack](prereqs/openstack-helm.md)
     * [Fabric Software Setup](fabric-setup.md)
-    * [Bringing Up CORD](profiles/intro.md)
-        * [R-CORD](profiles/rcord/install.md)
-            * [EdgeCore (OpenOLT driver) Setup](openolt/README.md)
-            * [Celestica / Microsemi Setup](profiles/rcord/celestica-olt-setup.md)
-            * [Emulated OLT/ONU](profiles/rcord/emulate.md)
-        * [M-CORD](profiles/mcord/install.md)
-            * [EnodeB Setup](profiles/mcord/enodeb-setup.md)
-        * [SEBA](profiles/seba/install.md)
-            * [SEBA-in-a-Box](profiles/seba/siab.md)
-            * [SEBA-in-a-Box with a fabric switch](profiles/seba/siab-with-fabric-switch.md)
-    * [Offline POD install](offline-install.md)
-    * [Helm Reference](charts/helm.md)
-        * [XOS-CORE](charts/xos-core.md)
-        * [ONOS](charts/onos.md)
-        * [VOLTHA](charts/voltha.md)
-        * [Kafka](charts/kafka.md)
-        * [Hippie OSS](charts/hippie-oss.md)
-        * [Base OpenStack](charts/base-openstack.md)
-            * [VTN Setup](prereqs/vtn-setup.md)
-        * [R-CORD](charts/rcord.md)
-        * [M-CORD](charts/mcord.md)
-        * [XOSSH](charts/xossh.md)
-        * [Logging and Monitoring](charts/logging-monitoring.md)
-        * [Persistent Storage](charts/storage.md)
-        * [BBSim](charts/bbsim.md)
+    * [Install Platform](platform.md)
+    * [Install Profile](profiles.md)
+    * [Offline Install](offline-install.md)
+    * [Attach containers to external NICs](operating_cord/veth_intf.md)
 * [Operations Guide](operating_cord/operating_cord.md)
     * [General Info](operating_cord/general.md)
         * [GUI](operating_cord/gui.md)
             * [Configuring the Service Graph](xos-gui/developer/service_graph.md)
         * [XOSSH](xos/dev/xossh.md)
-        * [XOS Internals](operating_cord/xos_internals.md)
-            * [XOS Containers](xos/xos_internals.md)
-            * [XOS Configuration](xos/modules/xosconfig.md)
-    * [Configuring Profiles](operating_cord/profiles.md)
-        * [R-CORD](profiles/rcord/configuration.md)
-            * Workflows
-                * [AT&T](profiles/rcord/workflows/att.md)
-        * [M-CORD](profiles/mcord/configuration.md)
-    * [Configuring Services](operating_cord/services.md)
-        * [Fabric](fabric/README.md)
-        * [ONOS](onos-service/README.md)
-        * [RCORD](rcord/README.md)
-        * [vOLT](olt-service/README.md)
-        * [vRouter](vrouter/README.md)
-        * [AT&T Workflow Driver](att-workflow-driver/README.md)
-    * [Attach containers to external NICs](operating_cord/veth_intf.md)
-* [API Guide](api/api.md)
-    * [gRPC API Tutorial](xos/dev/grpc_api.md)
-    * [REST API](operating_cord/rest_apis.md)
-    * [TOSCA](xos-tosca/README.md)
+    * [APIs](operating_cord/api.md)
+        * [gRPC API](xos/dev/grpc_api.md)
+        * [REST API](operating_cord/rest_apis.md)
+        * [TOSCA](xos-tosca/README.md)
+    * [Monitoring and Logging](operating_cord/diag.md)
+        * [Prometheus](operating_cord/prometheus.md)
+        * [ELK Stack](operating_cord/elk_stack.md)
 * [Development Guide](developer/developer.md)
     * [Getting the Source Code](developer/getting_the_code.md)
-    * [Writing Models and Synchronizers](xos/intro.md)
-        * [XOS Modeling Framework](xos/dev/xproto.md)
-            * [XOS Tool Chain (Internals)](xos/dev/xosgenx.md)
-        * [XOS Synchronizer Framework](xos/dev/synchronizers.md)
-            * [Synchronizer Design](xos/dev/sync_arch.md)
-            * [Synchronizer Implementation](xos/dev/sync_impl.md)
-            * [Synchronizer Reference](xos/dev/sync_reference.md)
-        * [Core Models](xos/core_models.md)
-        * [Security Policies](xos/security_policies.md)
-        * [Tutorial](xos/tutorials/basic_synchronizer.md)
+    * [Modeling Services](developer/xos-intro.md)
     * [Developer Workflows](developer/workflows.md)
         * [Working on R-CORD Without an OLT/ONU](developer/configuration_rcord.md)
     * [Building Docker Images](developer/imagebuilder.md)
-    * [Platform Services](developer/platform.md)
-        * [Kubernetes](kubernetes-service/kubernetes-service.md)
-        * [OpenStack](openstack/openstack-service.md)
-        * [VTN and Service Composition](xos/xos_vtn.md)
     * [Example Services](examples/examples.md)
         * [SimpleExampleService](simpleexampleservice/simple-example-service.md)
         * [ExampleService](exampleservice/example-service.md)
@@ -103,3 +59,47 @@
     * [Test Environment](cord-tester/qa_testenv.md)
     * [System Tests](cord-tester/validate_pods.md)
 
+## References
+
+* [Profile Reference](profiles/intro.md)
+    * [SEBA](profiles/seba/README.md)
+        * Install
+            * [Install SEBA Charts](profiles/seba/install.md)
+            * [SEBA-in-a-Box](profiles/seba/siab.md)
+            * [SEBA-in-a-Box with Fabric Switch](profiles/seba/siab-with-fabric-switch.md)
+            * [Scale testing with BBSim](profiles/seba/bbsim.md)
+            * [Celestica / Microsemi Setup](profiles/rcord/celestica-olt-setup.md)
+            * [Emulated OLT/ONU](profiles/rcord/emulate.md)
+            * Workflows
+                * [AT&T](profiles/seba/workflows/att.md)
+        * [Configure](profiles/seba/configuration.md)
+    * [M-CORD](profiles/mcord/README.md)
+        * Install
+            * [Install M-CORD Charts](profiles/mcord/install.md)
+            * [EnodeB Setup](profiles/mcord/enodeb-setup.md)
+        * [Configure](profiles/mcord/configuration.md)
+* [Service Reference](operating_cord/services.md)
+    * [Fabric](fabric/README.md)
+    * [ONOS](onos-service/README.md)
+    * [RCORD](rcord/README.md)
+    * [vOLT](olt-service/README.md)
+    * [vRouter](vrouter/README.md)
+    * [AT&T Workflow Driver](att-workflow-driver/README.md)
+    * [Kubernetes](kubernetes-service/kubernetes-service.md)
+    * [OpenStack](openstack/openstack-service.md)
+    * [VTN](xos/xos_vtn.md)
+* [Helm Reference](charts/helm.md)
+    * [XOS-CORE](charts/xos-core.md)
+    * [ONOS](charts/onos.md)
+    * [VOLTHA](charts/voltha.md)
+    * [Kafka](charts/kafka.md)
+    * [Hippie OSS](charts/hippie-oss.md)
+    * [Base OpenStack](charts/base-openstack.md)
+        * [VTN Setup](prereqs/vtn-setup.md)
+    * [R-CORD](charts/rcord.md)
+    * [M-CORD](charts/mcord.md)
+    * [XOSSH](charts/xossh.md)
+    * [Logging and Monitoring](charts/logging-monitoring.md)
+    * [Persistent Storage](charts/storage.md)
+    * [BBSim](charts/bbsim.md)
+
diff --git a/api/api.md b/api/api.md
deleted file mode 100644
index 1948c3f..0000000
--- a/api/api.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# API Guide
-
-This guide describes workflows for interacting with the API of the NEM. There
-are several different API mechanisms that the NEM supports. Some of them are
-used in a Northbound context, for services sitting on top the NEM to interact
-with the NEM, and some are used internally for components to communicate with each other.
-
-* [gRPC](/xos/dev/grpc_api.md). The gRPC API is used internally for synchronizers and for Chameleon to speak with the XOS core. It's also available as a Northbound API.
-
-* [REST](/operating_cord/rest_apis.md). The REST API is implemented by the Chameleon container. In addition to being a popular Northbound API, it's also used by the XOS GUI.
-
-* [TOSCA](/xos-tosca/README.md). TOSCA is implemented by the xos-tosca container and is typically used to configure and provision a
-   POD. Later sections of this guide give examples of TOSCA workflows used to provision and configure various
-   [profiles](/operating_cord/profiles.md) and [services](/operating_cord/services.md). TOSCA can also be used as a general-purpose runtime API.
diff --git a/book.json b/book.json
index 0bf2058..99c87d6 100644
--- a/book.json
+++ b/book.json
@@ -13,10 +13,12 @@
   "plugins": [
     "anchorjs",
     "smart-nav-collapse",
+    "custom-favicon",
     "page-toc",
     "versions-select"
   ],
-  "pluginsConfig": {
+"pluginsConfig": {
+    "favicon": "images/cord.ico",
     "versions": {
       "options": [
         {
diff --git a/charts/rcord.md b/charts/rcord.md
new file mode 100644
index 0000000..789d8a7
--- /dev/null
+++ b/charts/rcord.md
@@ -0,0 +1,2 @@
+# R-CORD
+
diff --git a/charts/seba-services.md b/charts/seba-services.md
new file mode 100644
index 0000000..3145bdc
--- /dev/null
+++ b/charts/seba-services.md
@@ -0,0 +1,10 @@
+# SEBA Services
+
+This chart contains all the XOS services needed to install SEBA.
+
+You can install it using:
+
+```bash
+helm dep update xos-profiles/seba-services
+helm install -n seba-service xos-profiles/seba-services/
+```
\ No newline at end of file
diff --git a/developer/xos-intro.md b/developer/xos-intro.md
new file mode 100644
index 0000000..5249f3f
--- /dev/null
+++ b/developer/xos-intro.md
@@ -0,0 +1,20 @@
+# Modeling Services
+
+CORD adopts a model-based design, which is to say all aspects
+of operating and managing CORD is mediated by a model-based
+control plane. XOS is a tool that CORD uses to implement this
+control plane. For an overview of XOS, see the following white paper:
+[XOS: Modeling-as-a-Service](https://wiki.opencord.org/display/CORD/XOS+and+the+CORD+Controller?preview=/1279317/4981376/XOS%20Modeling-as-a-Service.pdf).
+
+XOS is a self-contained component of CORD, with its own
+[Guide](https://guide.xosproject.org). Consult this Guide to learn how
+to [use XOS](https://guide.xosproject.org/use.html) to write models
+and synchronizers for CORD services. The Guide also describes how
+to [install XOS](https://guide.xosproject.org/install.html) as a
+stand-alone platform, which can be useful when developing models
+and synchronizers.
+
+
+
+
+
diff --git a/images/cord.ico b/images/cord.ico
new file mode 100644
index 0000000..1322921
--- /dev/null
+++ b/images/cord.ico
Binary files differ
diff --git a/images/layers.png b/images/layers.png
new file mode 100644
index 0000000..4df9160
--- /dev/null
+++ b/images/layers.png
Binary files differ
diff --git a/navigate.md b/navigate.md
index 0a6db80..2acf404 100644
--- a/navigate.md
+++ b/navigate.md
@@ -1,5 +1,37 @@
 # Navigating CORD
 
+## Assembled in Layers
+
+A given instance of CORD is constructed from a set of disaggregated
+components. This assembly is done according to the general pattern
+shown in the following conceptual diagram.
+
+![Layers](images/layers.png)
+
+The three layers are:
+
+* **Platform:** The bottom-most layer consists of ONOS, XOS,
+  Kafka, and collection of Logging and Monitoring micro-services,
+  all running on a Kubernetes foundation (not shown). This is the
+  starting point for all configurations of CORD.
+
+* **Profile:** The middle layer typically consists of a set of
+  services (e.g., access services, VNFs, other cloud services). These
+  components run on the underlying platform, and includes both
+  abstract services on-boarded into XOS and SDN control apps running
+  on ONOS.
+
+* **Workflows:** The top-most layer consists of one or more
+  workflows, each of which defines the business logic and state
+  machine for one of the access technologies included in the
+  profile. A workflow augments/parameterizes a profile for the target
+  deployment environment; it's not a software layer, per se.
+
+The diagram also shows a hardware bill-of-materials, which must be
+defined for a given POD.
+
+## Operationalized in Stages
+
 Understanding the relationship between installing, operating, and developing
 CORD—and the corresponding toolsets and specification files used by
 each stage—is helpful in navigating CORD.
diff --git a/offline-install.md b/offline-install.md
index 9026e93..dc209ef 100644
--- a/offline-install.md
+++ b/offline-install.md
@@ -1,4 +1,4 @@
-# Offline installation
+# Offline Install
 
 Often, CORD PODs' (management networks) don't have access to Internet.
 
diff --git a/operating_cord/api.md b/operating_cord/api.md
new file mode 100644
index 0000000..9d98092
--- /dev/null
+++ b/operating_cord/api.md
@@ -0,0 +1,22 @@
+# APIs
+
+This section describes workflows for interacting with the API of the
+CORD. There are multiple APIs. Some of them are used in a
+Northbound context, for services sitting on top the CORD, and some are
+used internally for components to communicate with each other.
+
+* [gRPC](/xos/dev/grpc_api.md). The gRPC API is used internally for
+  synchronizers and for Chameleon to speak with the XOS core. It's
+  also available as a Northbound API.
+  
+* [REST](/operating_cord/rest_apis.md). The REST API is implemented by
+  the Chameleon container. In addition to being a popular Northbound
+  API, it's also used by the XOS GUI.
+
+* [TOSCA](/xos-tosca/README.md). TOSCA is implemented by the
+  xos-tosca container and is typically used to configure and provision
+  a POD. The following two references describe how to use TOSCA to
+  configure Profiles and Services, respectively:
+
+    * [Configuring Profiles](../profiles/intro.md)
+    * [Configuring Services](../operating_cord/services.md)
diff --git a/operating_cord/diag.md b/operating_cord/diag.md
index 947b342..6f45f4c 100644
--- a/operating_cord/diag.md
+++ b/operating_cord/diag.md
@@ -1 +1,5 @@
-# Diagnostics
+# Monitoring and Logging
+
+CORD is usually configured with monitoring and logging capabilities,
+built around Prometheus and ELK Stack, respectively. Both work on
+events/logs posted to Kafka and display results on a Kibana dashboard.
diff --git a/operating_cord/elk_stack.md b/operating_cord/elk_stack.md
index a2d45d6..f0aeea4 100644
--- a/operating_cord/elk_stack.md
+++ b/operating_cord/elk_stack.md
@@ -1,4 +1,4 @@
-# Diagnostics
+# ELK Stack
 
 CORD uses ELK Stack for logging information at all levels. CORD’s ELK Stack
 logger collects information from several components, including the XOS Core,
diff --git a/operating_cord/general.md b/operating_cord/general.md
index 10a7ec4..560e8aa 100644
--- a/operating_cord/general.md
+++ b/operating_cord/general.md
@@ -1,9 +1,11 @@
 # General Info
 
-This section of the guide describes tools for interacting with CORD. These tools generally interact with
-CORD over a variety of APIs that are described [here](/api/api.md). Most notably:
+This section of the guide describes tools for interacting with CORD.
+These tools generally interact with CORD over a variety of APIs that
+are described [here](api.md). Most notably:
 
 * A graphical interface is documented [here](gui.md).
 
-* A text shell, [XOSSH](/xos/dev/xossh.md), can be used to operate on objects in the CORD data model.
+* A text shell, [XOSSH](/xos/dev/xossh.md), can be used to operate on
+  objects in the CORD data model.
 
diff --git a/operating_cord/operating_cord.md b/operating_cord/operating_cord.md
index 5de08ea..a78f5c8 100644
--- a/operating_cord/operating_cord.md
+++ b/operating_cord/operating_cord.md
@@ -1,14 +1,18 @@
 # Operations Guide
 
-This guide defines various processes and procedures for operating a
-CORD POD. It assumes the [install](../README.md) is already
-complete, and you want to operate and manage a running POD.
+This guide defines various processes, procedures, and tools for
+operating a CORD POD. It assumes the [install](../README.md) is
+already complete, and you want to operate and manage a running POD.
 
-Today, CORD most often runs for demo, development, or evaluation
-purposes, so this guide is limited to simple procedures suitable for
-such settings. We expect more realistic operational scenarios will be
-supported in the future.
+Note that the first step in operating a POD is to provision and configure
+the set of *Services* included in the selected *Profile*. Configuration
+details are specified in the follow two References:
 
+* [Configuring Profiles](../profiles/intro.md)
+* [Configuring Services](services.md)
+
+Default configurations are currently loaded into the POD at
+installation time.
 
 
 
diff --git a/operating_cord/prometheus.md b/operating_cord/prometheus.md
new file mode 100644
index 0000000..c387479
--- /dev/null
+++ b/operating_cord/prometheus.md
@@ -0,0 +1,3 @@
+# Prometheus
+
+This is a placeholder for information on monitoring...
diff --git a/operating_cord/services.md b/operating_cord/services.md
index ded5c92..d8780d9 100644
--- a/operating_cord/services.md
+++ b/operating_cord/services.md
@@ -1,7 +1,7 @@
-# Configuring Services
+# Service Reference
 
-This sections contains detailed instructions about how to configure
-individual services. Among other things, it describes what services
-depend on, which is particularly useful in case you want to create
-your own service graph. As with profiles, services are typically
-configured using a TOSCA workflow.
+Each release of CORD includes a collection of services, some of which
+are considered *platform services* (i.e., configured into all profiles) and
+some of which are *profile-specific*.  The following documents the
+available services, specifying how each is modeled using `xproto`, and
+how each is configured and provisioned using TOSCA.
diff --git a/operating_cord/xos_internals.md b/operating_cord/xos_internals.md
index 735e69d..03bceef 100644
--- a/operating_cord/xos_internals.md
+++ b/operating_cord/xos_internals.md
@@ -2,13 +2,9 @@
 
 XOS is the component of CORD that implements the control plane
 through which operators control and manage CORD. This normally
-happens through a set of XOS-generated interfaces:
-
-* [TOSCA](../xos-tosca/README.md)
-* [REST API](rest_apis.md)
-* [XOSSH](../xos/dev/xossh.md)
+happens through a set of XOS-generated [APIs](api.md).
 
 This section describes XOS internals, including how it is configured and
 deployed on a running POD. Additional information about how to write
 XOS models (from which these interfaces are generated) is
-described [elsewhere](../xos/README.md) in thie guide.
+described a separate [XOS Guide](https://guide.xosproject.org).
diff --git a/overview.md b/overview.md
index c6a67da..ce3e3aa 100644
--- a/overview.md
+++ b/overview.md
@@ -1,7 +1,14 @@
 # CORD Guide
 
-This is a curated set of guides that describe how to install, operate, test,
-and develop [CORD](https://opencord.org).
+This is a curated set of documents that describe how to install, operate, test,
+and develop [CORD](https://www.opennetworking.org/cord/).
+The material is organized in two parts:
+
+* *Guides:* Outlines the process of installing, operating, testing and
+   developing for CORD as a whole.
+
+* *References:* Definitions and specifications about individual
+   components that make up CORD.
 
 CORD is a community-based open source project. In addition to this guide, you
 can find information about this community, its projects, and its governance on
@@ -9,9 +16,9 @@
 and design notes that have shaped [CORD's
 architecture](https://wiki.opencord.org/display/CORD/Documentation).
 
-## Navigating the Guide
+## Navigating the Guides
 
-The guide is organized around the major stages in the lifecycle of CORD:
+The guides are organized around the major stages in the lifecycle of CORD:
 
 * [Installation](README.md): Installing (and later upgrading) CORD.
 * [Operations](operating_cord/operating_cord.md): Operating an already
@@ -24,7 +31,24 @@
 These are all fairly obvious. What's less obvious is the relationship among
 these stages, which is helpful in [Navigating CORD](navigate.md).
 
-## Making Changes to the Guide
+## Navigating the References
+
+CORD is built from components and the aggregation of components into a
+coherent solution. The References are organized accordingly:
+
+* [Profile Reference](profiles/intro.md): Installation and
+  configuation details for specific solutions built using CORD
+  components.
+* [Service Reference](operating_cord/services.md): Configuration
+   (TOSCA) and modeling (xproto) definitions for individual CORD
+   components.
+* [Helm Refernce](charts/helm.md): Helm charts used to install
+   individual CORD components.
+
+For more information on the relationship between Profiles and
+Services, see [Navigating CORD](navigate.md).
+
+## Making Changes to this Document
 
 The [http://guide.opencord.org](http://guide.opencord.org) website is built
 using the [GitBook Toolchain](https://toolchain.gitbook.com/), with the
diff --git a/platform.md b/platform.md
new file mode 100644
index 0000000..46b4851
--- /dev/null
+++ b/platform.md
@@ -0,0 +1,24 @@
+# Install Platform
+
+Once the prerequisites have been met, the next step to installing CORD is
+to bring up the Helm charts for the platform components. This includes the
+following steps:
+
+## Install ONOS
+
+Install [onos](./charts/onos.md#onos-manages-fabric--voltha). 
+It will manage the fabric infrastructure.
+
+## Install XOS
+
+Install [xos-core](./charts/xos-core.md). It will orchestrate the services.
+
+## Install Kafka
+
+Install [cord-kafka](./charts/kafka.md). It will implement a shared 
+message bus.
+
+## Install Logging and Monitoring
+
+Install [loggin-monitoring](./charts/logging-monitoring.md). Log and monitor
+events in the POD.
diff --git a/profiles.md b/profiles.md
new file mode 100644
index 0000000..16e47a9
--- /dev/null
+++ b/profiles.md
@@ -0,0 +1,4 @@
+# Install Profile
+
+Once the [platform](platform.md) is installed, you are ready to bring up one
+of the available [profiles](profiles/intro.md).
diff --git a/profiles/intro.md b/profiles/intro.md
index 37646b3..5c049ee 100644
--- a/profiles/intro.md
+++ b/profiles/intro.md
@@ -1,7 +1,7 @@
-# Bringing Up CORD
+# Profile Reference
 
 CORD is a general-purpose platform that is able to run one or more
-profiles, each of which includes some access technology (e.g., OLT,
+*profiles*, each of which includes some access technology (e.g., OLT,
 RAN) and some collection of services (called a service graph or
 service mesh).
 
diff --git a/profiles/mcord/README.md b/profiles/mcord/README.md
new file mode 100644
index 0000000..ac0281f
--- /dev/null
+++ b/profiles/mcord/README.md
@@ -0,0 +1,5 @@
+# M-CORD Profile
+
+M-CORD is supported in 6.0 and will be supported again in 7.0, but it
+is not currently available as part of 6.1.
+
diff --git a/profiles/mcord/install.md b/profiles/mcord/install.md
index bf842b4..81018af 100644
--- a/profiles/mcord/install.md
+++ b/profiles/mcord/install.md
@@ -1,4 +1,4 @@
-# M-CORD
+# Install  M-CORD Charts
 
 > **Note**: Currently the M-CORD is under maintenance.
 > Check the link below for more information:
diff --git a/profiles/seba/README.md b/profiles/seba/README.md
new file mode 100644
index 0000000..a23023d
--- /dev/null
+++ b/profiles/seba/README.md
@@ -0,0 +1,8 @@
+# SEBA Profile
+
+SEBA (Software-Enabled Broadband Access) is a lightweight profile that
+supports white-box OLT devices.
+[Click here for a high-level overview.](https://www.opennetworking.org/seba/).
+
+The following pages describe how to install SEBA with some workload,
+and how to configure an installed SEBA POD.
diff --git a/profiles/seba/bbsim.md b/profiles/seba/bbsim.md
new file mode 100644
index 0000000..12f8e67
--- /dev/null
+++ b/profiles/seba/bbsim.md
@@ -0,0 +1,33 @@
+# Scale testing using BBSim
+
+Broadband Simulator (BBSim) is a control-plane only simulator that is used to
+test the sistem at scale.
+
+You can run BBSim on top of any SEBA installation, for instructions on how to
+install it you can refer to the [bbsim](../../charts/bbsim.md) helm reference.
+
+## System configurations that affects BBSim
+
+The most important detail that determine how BBSim will behave is the DHCP
+configuration.
+
+There are two options:
+
+- sending packets out of the switch
+- sending packets back to the OLT
+
+### DHCP Packets through the aggregation switch
+
+This is the way a physical POD is set up to work. If you decide to follow this
+route no changes are required in the configuration but you'll need to make sure
+your DHCP server is configured to assign IP Addresses to subscriber requesting
+them with `S-Tag` set as `999` and `C-Tag` starting from `900` for the first
+subscriber and increasing by one for each subscriber.
+
+### DHCP Packets back to the OLT
+
+If you don't have a DHCP server configured accordingly you can use the DHCP server
+that runs inside BBSim itself. To do that you need to send the DHCP Packets
+back to the OLT.
+
+To do that you can use this TOSCA recipe: <https://github.com/opencord/helm-charts/blob/master/examples/bbsim-dhcp.yaml>
\ No newline at end of file
diff --git a/profiles/seba/celestica-olt-setup.md b/profiles/seba/celestica-olt-setup.md
new file mode 100644
index 0000000..cab0435
--- /dev/null
+++ b/profiles/seba/celestica-olt-setup.md
@@ -0,0 +1,68 @@
+# Celestica OLT setup
+
+Celestica provides a GPON based OLT device that can work with Voltha and CORD.
+The OLT (also known as Microsemi OLT) model is called *CLS Ruby S1010*. For more info on the hardware models and the supported optics, look at the [recommended hardware page](../../prereqs/hardware.md#recommended-hardware).
+
+The following guide explains how to integrate the Celestica OLT with Voltha, and more in general with CORD.
+
+## OLT hardware notes and ports configuration
+
+The OLT has two lines of ports. Upper ports are master ports and should be used first. Lower ports act as backup ports for the upper ports.
+The OLT has 48 UNI ports (24 master, and 24 backups) and 6 NNI ports (3 master, and 3 backups).
+The UNI ports are divided in three PON groups. Each PON group is associated to an NNI port. The most right NNI port group is used for the most left PON group, and so on.
+Each PON group is divided in 4 PONs (each with four PON ports - the two upper, master, and the two lower, backup). Each port can support up to 32 connections.
+Each PON (each couple of vertically grouped ports, one master, one backup) will appear as a different OLT device in Voltha.
+
+## How to manage the OLT (access the CLI)
+
+As far as we know, the out-of-band OLT management port is disabled by default, and the OLT can be managed -including by Voltha- only in-band.
+Also, the OLT is managed as a L2 device by Voltha. As such, no IP addresses can be assigned to the OLT. The OLT doesn't need any specific configuration. Anyway, you may need to access the CLI for debug purposes. The CLI can be accessed from the console port for debugging.
+
+## OLT pre-installed software notes
+
+The Celestica box should come with ONIE and its own OS pre-installed. No additional configurations are required.
+
+## Get the OLTs MAC addresses
+
+The MAC addresses of the OLTs are needed to perform a successful Voltha configuration. To get the OLT MAC address, from the OLT CLI type:
+
+```shell
+/voltapp/onie-syseeprom
+```
+
+The command will only show the MAC address of the first OLT (first couple of ports from the left). To know the MAC addresses of the other OLTs, add 1 to the first MAC address, for each couple of next ports. For example, the MAC address of the second OLT (the second couple of vertical ports from the left) will be the MAC address returned by the command above plus 1.
+
+## Discover the OLT in Voltha
+
+Once the MAC address is known, pre-provision the OLT from Voltha
+
+```shell
+preprovision_olt --device-type=microsemi_olt --mac-address=11:22:33:44:55:66
+```
+
+where *11:22:33:44:55:66* is the MAC address of your OLT device.
+
+Then, enable the OLT, typing
+
+```shell
+enable
+```
+
+Voltha will start to send L2 packets to the OLT, until it gets discovered.
+
+> **NOTE:** at the moment, the microsemi_olt adapter sends only few packets to the OLT box after the *enable* command has been input. Recently, a *reboot* command has been added for this adapter. The command restarts the provisioning process.
+
+## Celestica OLT and R-CORD
+
+As said, the Celestica OLT can be used with Voltha, so in principle with R-CORD as well. At the moment, this requires some additional configuration to allow the in-band management communication between Voltha and the OLT.
+
+As in-band communication is done by L2 MAC address, the NNI port of OLT needs to have a L2 connection with Voltha.
+
+More specifically, in a typical CORD deployment Voltha runs as a set of container managed by k8s, which in turn runs on a (physical or virtual) machine. This machine is usually connected to the management network only. In a deployment using Celestica boxes instead, the server running Voltha will need to have an extra connection to the data plane (usually the CORD fabric switches).
+
+Of course, also the OLT NNI port needs to be connected as well to the same fabric switch.
+If both the OLT and the server running Voltha are connected to the same fabric switch, a path needs to be provisioned between the two. This can be achieved -for example- in the CORD fabric using Trellis, through the configuration of a VLAN cross-connect or a pseudo-wire.
+
+Further more, the Voltha vcore container (called voltha in the Kubernetes based deployment) should be connected to the data plane port, connected to the OLT, which is a quite trivial but manual operation. The steps to connect containers and server ports can be found in the [veth interface configuration guide](../../operating_cord/veth_intf.md).
+
+> **NOTE:** the Celestica OLT is known to work *only* with the top-down R-CORD configuration workflow.
diff --git a/profiles/seba/configuration.md b/profiles/seba/configuration.md
new file mode 100644
index 0000000..8a2a271
--- /dev/null
+++ b/profiles/seba/configuration.md
@@ -0,0 +1,225 @@
+# SEBA Configuration
+
+Once all the components needed for the SEBA profile are up and
+running on your POD, you will need to configure it. This is typically
+done using TOSCA. This configuration is environment specific, so
+you will need to create your own, but the following can serve as a
+reference:
+
+```yaml
+tosca_definitions_version: tosca_simple_yaml_1_0
+imports:
+  - custom_types/oltdevice.yaml
+  - custom_types/switch.yaml
+  - custom_types/switchport.yaml
+  - custom_types/portinterface.yaml
+  - custom_types/voltservice.yaml
+  - custom_types/vrouterserviceinstance.yaml
+  - custom_types/vrouterstaticroute.yaml
+
+description: Configures a full SEBA POD
+
+topology_template:
+  node_templates:
+    # Fabric configuration
+    switch#my_fabric_switch:
+      type: tosca.nodes.Switch
+      properties:
+        driver: ofdpa3
+        ipv4Loopback: 192.168.0.201
+        ipv4NodeSid: 17
+        isEdgeRouter: True
+        name: my_fabric_switch
+        ofId: of:0000000000000001
+        routerMac: 00:00:02:01:06:01
+
+    # Setup the OLT switch port
+    port#olt_port:
+      type: tosca.nodes.SwitchPort
+      properties:
+        portId: 1
+        host_learning: false
+      requirements:
+        - switch:
+            node: switch#my_fabric_switch
+            relationship: tosca.relationships.BelongsToOne
+
+    # Setup the OLT switch port interface
+    interface#olt_interface:
+      type: tosca.nodes.PortInterface
+      properties:
+        ips: 192.168.0.254/24
+        name: olt_interface
+      requirements:
+        - port:
+            node: port#olt_port
+            relationship: tosca.relationships.BelongsToOne
+
+    # Setup the fabric switch port where the external
+    # router is connected to
+    port#vrouter_port:
+      type: tosca.nodes.SwitchPort
+      properties:
+        portId: 31
+      requirements:
+        - switch:
+            node: switch#my_fabric_switch
+            relationship: tosca.relationships.BelongsToOne
+
+    # Setup the fabric switch port interface where the
+    # external router is connected to
+    interface#vrouter_interface:
+      type: tosca.nodes.PortInterface
+      properties:
+        name: vrouter_interface
+        vlanUntagged: 40
+        ips: 10.231.254.2/29
+      requirements:
+        - port:
+            node: port#vrouter_port
+            relationship: tosca.relationships.BelongsToOne
+
+    # Add a vRouter (ONOS)
+    vrouter#my_vrouter:
+      type: tosca.nodes.VRouterServiceInstance
+      properties:
+        name: my_vrouter
+
+    # Add a static route to the vRouter (ONOS)
+    route#my_route:
+      type: tosca.nodes.VRouterStaticRoute
+      properties:
+        prefix: "0.0.0.0/0"
+        next_hop: "10.231.254.1"
+      requirements:
+        - vrouter:
+            node: vrouter#my_vrouter
+            relationship: tosca.relationships.BelongsToOne
+
+    # Setup the OLT service
+    service#volt:
+      type: tosca.nodes.VOLTService
+      properties:
+        name: volt
+        must-exist: true
+
+    # Setup the OLT device
+    olt_device:
+      type: tosca.nodes.OLTDevice
+      properties:
+        name: volt-1
+        device_type: openolt
+        host: 10.90.0.114
+        port: 9191
+        switch_datapath_id: of:0000000000000001
+        switch_port: "1"
+        outer_tpid: "0x8100"
+        uplink: "128"
+      requirements:
+        - volt_service:
+            node: service#volt
+            relationship: tosca.relationships.BelongsToOne
+```
+
+For instructions on how to push TOSCA into a CORD POD, please
+refer to this [guide](../../xos-tosca/README.md).
+
+## Top-Down Subscriber Provisioning
+
+Once the POD has been configured, you can create a subscriber. This
+section describes a "top-down" approach for doing that. (The following
+section describes an alternative, "bottom up" approach.)
+
+To create a subscriber, you need to retrieve some information:
+
+- ONU Serial Number
+- Mac Address
+- IP Address
+
+### Find ONU Serial Number
+
+Once your POD is set up and the OLT has been pushed and activated in VOLTHA,
+XOS will discover the ONUs available in the system.
+
+You can find them through:
+
+- XOS GUI: on the left side click on `vOLT > ONUDevices`
+- XOS Rest API: `http://<pod-id>:<chameleon-port|30006>/xosapi/v1/volt/onudevices`
+- VOLTHA CLI: [Command Line Interface](../../charts/voltha.md#how-to-access-the-voltha-cli)
+
+If you are connected to the VOLTHA CLI you can use the following
+command to list all the existing devices:
+
+```shell
+(voltha) devices
+Devices:
++------------------+--------------+------+------------------+-------------+-------------+----------------+----------------+------------------+----------+-------------------------+----------------------+------------------------------+
+|               id |         type | root |        parent_id | admin_state | oper_status | connect_status | parent_port_no |    host_and_port | vendor_id| proxy_address.device_id | proxy_address.onu_id | proxy_address.onu_session_id |
++------------------+--------------+------+------------------+-------------+-------------+----------------+----------------+------------------+----------+-------------------------+----------------------+------------------------------+
+| 0001941bd45e71d8 |      openolt | True | 000100000a5a0072 |     ENABLED |      ACTIVE |      REACHABLE |                | 10.90.0.114:9191 |          |                         |                      |                              |
+| 00015698e67dc060 | broadcom_onu | True | 0001941bd45e71d8 |     ENABLED |      ACTIVE |      REACHABLE |      536870912 |                  |      BRCM|        0001941bd45e71d8 |                    1 |                            1 |
++------------------+--------------+------+------------------+-------------+-------------+----------------+----------------+------------------+----------+-------------------------+----------------------+------------------------------+
+```
+
+Locate the correct ONU, then:
+
+```shell
+(voltha) device 00015698e67dc060
+(device 00015698e67dc060) show
+Device 00015698e67dc060
++------------------------------+------------------+
+|                        field |            value |
++------------------------------+------------------+
+|                           id | 00015698e67dc060 |
+|                         type |     broadcom_onu |
+|                         root |             True |
+|                    parent_id | 0001941bd45e71d8 |
+|                       vendor |         Broadcom |
+|                        model |              n/a |
+|             hardware_version |     to be filled |
+|             firmware_version |     to be filled |
+|                 images.image |        1 item(s) |
+|                serial_number |     BRCM22222222 |
++------------------------------+------------------+
+|                      adapter |     broadcom_onu |
+|                  admin_state |                3 |
+|                  oper_status |                4 |
+|               connect_status |                2 |
+|      proxy_address.device_id | 0001941bd45e71d8 |
+|         proxy_address.onu_id |                1 |
+| proxy_address.onu_session_id |                1 |
+|               parent_port_no |        536870912 |
+|                    vendor_id |             BRCM |
+|                        ports |        2 item(s) |
++------------------------------+------------------+
+|                  flows.items |        5 item(s) |
++------------------------------+------------------+
+```
+
+to find the correct serial number.
+
+### Push a Subscriber into CORD
+
+Once you have this information, you can create the subscriber by
+customizing the following TOSCA and passing it into the POD:
+
+```yaml
+tosca_definitions_version: tosca_simple_yaml_1_0
+imports:
+  - custom_types/rcordsubscriber.yaml
+description: Create a test subscriber
+topology_template:
+  node_templates:
+    # A subscriber
+    my_house:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: My House
+        c_tag: 111
+        onu_device: BRCM1234 # Serial Number of the ONU Device to which this subscriber is connected
+        mac_address: 00:AA:00:00:00:01 # subscriber mac address
+        ip_address: 10.8.2.1 # subscriber IP
+```
+
+For instructions on how to push TOSCA into a CORD POD, please
+refer to this [guide](../../xos-tosca/README.md).
diff --git a/profiles/seba/install.md b/profiles/seba/install.md
index 212157d..f37dcbc 100644
--- a/profiles/seba/install.md
+++ b/profiles/seba/install.md
@@ -1,6 +1,15 @@
-# SEBA Profile
+# Install SEBA Charts
 
-SEBA is a lightweight platform based on a variant of R-CORD.
-[Click here for a high-level overview.](https://www.opennetworking.org/seba/)
+This page walks through the sequence of Helm operations needed to
+bring up the SEBA profile. It assumes the Platform has already been
+installed.
 
-Quick start: [SEBA-in-a-Box](siab.md)
+## Install VOLTHA
+
+Install [voltha](../../charts/voltha.md).
+It will manage the OLT devices.
+
+## Install Seba-Services
+
+Install [seba-services](../../charts/seba-services.md).
+This will run all the XOS services necessary to manage the data plane.
diff --git a/profiles/rcord/workflows/att.md b/profiles/seba/workflows/att.md
similarity index 100%
rename from profiles/rcord/workflows/att.md
rename to profiles/seba/workflows/att.md
diff --git a/quickstart.md b/quickstart.md
index bf1354d..544963d 100644
--- a/quickstart.md
+++ b/quickstart.md
@@ -1,13 +1,14 @@
 # Quick Start
 
 This section walks you through an example installation sequence on two
-different platforms. If you'd prefer to understand the installation
-process in more depth, including the full range of deployment options,
-you might start with the [Installation Guide](README.md) instead.
+different Unix-based platforms. This is just a surface introduction to
+CORD. If you'd prefer to understand the installation process in more
+depth, including the full range of deployment options, you should
+start with the [Installation Guide](README.md) instead.
 
-This Quick Start describes how to install the R-CORD profile, plus a
-`SimpleExampleService`, on a single machine. Once you complete these
-steps, you might be interested in jumping ahead to the
+This Quick Start describes how to install a subset of the CORD
+platform, plus a `SimpleExampleService`, on a single machine. Once you
+complete these steps, you might be interested in jumping ahead to the
 [SimpleExampleService Tutorial](simpleexampleservice/simple-example-service.md)
 to learn more about the make-up of a CORD service. Another option
 would be to explore CORD's [operational interfaces](operating_cord/general.md). 
