diff --git a/README.md b/README.md
index 44a2df3..1911651 100644
--- a/README.md
+++ b/README.md
@@ -22,12 +22,12 @@
 **minimal** or **full**. The difference is characterized in the following
 table:
 
-| RESOURCE                | MINIMAL       | FULL                      |
+| RESOURCE                | MINIMAL       | FULL |
 | ----------------------- | ------------- | ------------------------- |
-| K8s Control Plane Nodes | 1             | 1                         |
-| K8s Workers             | 2             | 3                         |
+| K8s Control Plane Nodes | 1             | 1 |
+| K8s Workers             | 2             | 3 |
 | EtcdOperator Components | Operator only | Operator, Backup, Restore |
-| EtcdCluster             | 1 Member      | 3 Members                 |
+| EtcdCluster             | 1 Member      | 3 Members |
 
 Throughout this `README.md` file deployment and configuration files are
 referenced in the form **$TYPE-cluster.cfg** and **$TYPE-values.yaml**.
@@ -76,62 +76,64 @@
 ```
 Please check the `releases` folder to see the available ones.
 
-| OPTION                                  | DEFAULT                                              | DESCRIPTION                                                                          |
-| --------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------ |
-| `TYPE`                                  | minimal                                              | `minimal` or `full` and determines number of cluster nodes and etcd cluster members  |
-| `NAME`                                  | TYPE                                                 | Name of the KinD Cluster to be created                                               |
-| `DEPLOY_K8S`                            | yes                                                  | Should the KinD Kubernetes cluster be deployed?                                      |
-| `JUST_K8S`                              | no                                                   | Should just the KinD Kubernetes cluster be depoyed? (i.e. no VOLTHA)                 |
-| `WITH_BBSIM`                            | no                                                   | Should the BBSIM POD be deployed?                                                    |
-| `NUM_OF_BBSIM`                          | 1                                                    | number of BBSIM POD to start (minimum = 1, maximum = 10)                             |
-| `WITH_ONOS`                             | yes                                                  | Should `ONOS` service be deployed?                                                   |
-| `WITH_RADIUS`                           | no                                                   | Should `freeradius` service be deployed?                                             |
-| `WITH_EAPOL`                            | no                                                   | Configure the OLT app to push EAPOL flows                                            |
-| `WITH_DHCP`                             | no                                                   | Configure the OLT app to push DCHP flows                                             |
-| `WITH_IGMP`                             | no                                                   | Configure the OLT app to push IGMP flows                                             |
-| `WITH_TIMINGS`                          | no                                                   | Outputs duration of various steps of the install                                     |
-| `WITH_CHAOS`                            | no                                                   | Starts kube-monkey to introduce chaos                                                |
-| `WITH_ADAPTERS`                         | yes                                                  | Should device adpters be installed, if no overrides options for specific adapters    |
-| `WITH_SIM_ADAPTERS`                     | no                                                   | Should simulated device adapters be deployed (simulated adpaters deprecated)         |
-| `WITH_OPEN_ADAPTERS`                    | yes                                                  | Should open OLT and ONU adapters be deployed                                         |
-| `WITH_PORT_FORWARDS`                    | yes                                                  | Forwards ports for some services from localhost into the K8s cluster                 |
-| `CONFIG_SADIS`                          | no                                                   | Configure SADIS entries into ONOS. Values: `yes`|`no`|`file`|`url`|`bbsim`           |
-| `SADIS_SUBSCRIBERS`                     | http://bbsim.voltha.svc:50074/v2/subscribers/%s      | URL for ONOS to use to query subsriber information if `CONFIG_SADIS` is set to `url` |
-| `SADIS_BANDWIDTH_PROFILES`              |http://bbsim.voltha.svc:50074/v2/bandwidthprofiles/%s | URL for ONOS to use to query bandwidth profiles if `CONFIG_SADIS` is set to `url`    |
-| `SADIS_CFG`                             | onos-files/onos-sadis-sample.json                    | SADIS Configuration File to push, if CONFIG_SADIS set                                |
-| `INSTALL_ONOS_APPS`                     | no                                                   | Replaces/installs ONOS OAR files in onos-files/onos-apps                             |
-| `INSTALL_KUBECTL`                       | yes                                                  | Should a copy of `kubectl` be installed locally?                                     |
-| `INSTALL_HELM`                          | yes                                                  | Should a copy of `helm` be installed locallly?                                       |
-| `VOLTHA_LOG_LEVEL`                      | WARN                                                 | Log level to set for VOLTHA core processes                                           |
-| `ONOS_CHART`                            | onf/voltha                                           | Helm chart to used to install ONOS                                                   |
-| `ONOS_CHART_VERSION`                    | latest                                               | Version of helm chart for ONOS                                                       |
-| `VOLTHA_CHART`                          | onf/voltha                                           | Helm chart to used to install voltha                                                 |
-| `VOLTHA_CHART_VERSION`                  | latest                                               | Version of Helm chart to install voltha                                              |
-| `VOLTHA_ADAPTER_SIM_CHART`              | onf/voltha-adapter-simulated                         | Helm chart to use to install simulated device adapter                                |
-| `VOLTHA_ADAPTER_SIM_CHART_VERSION`      | latest                                               | Version of Helm chart to install simulated device adapter                            |
-| `VOLTHA_BBSIM_CHART`                    | onf/bbsim                                            | Helm chart to use to install bbsim                                                   |
-| `VOLTHA_BBSIM_CHART_VERSION`            | latest                                               | Version of Helm chart to install bbim                                                |
-| `VOLTHA_ADAPTER_OPEN_OLT_CHART`         | onf/voltha-adapter-openolt                           | Helm chart to use to install OpenOlt adapter                                         |
-| `VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION` | latest                                               | Version of Helm chart to install OpenOlt adapter                                     |
-| `VOLTHA_ADAPTER_OPEN_ONU_CHART`         | onf/voltha-adapter-openonu                           | Helm chart to use to install OpenOnu adapter                                         |
-| `VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION` | latest                                               | Version of Helm chart to install OpenOnu adapter                                     |
-| `ONLY_ONE`                              | yes                                                  | Run a single `rw-core`, no `api-server`, and no `ssh` CLI                            |
-| `ENABLE_ONOS_EXTRANEOUS_RULES`          | no                                                   | Set ONOS to allows flow rules not set via ONOS                                       |
-| `UPDATE_HELM_REPOS`                     | yes                                                  | Update the Helm repository with the latest charts before installing                  |
-| `WAIT_ON_DOWN`                          | yes                                                  | When tearing down the VOLTHA, don't exit script until all containers are stoped      |
-| `WAIT_TIMEOUT`                          | 30m                                                  | Time to wait before timing out on lengthy operations                                 |
-| `KIND_VERSION`                          | v0.5.1                                               | Version of KinD to install if using a KinD cluster                                   |
-| `VOLTCTL_VERSION`                       | latest                                               | Version of `voltctl` to install or up/downgrade to and use                           |
-| `ONOS_API_PORT`                         | dynamic                                              | (advanced) Override dynamic port selection for port forward for ONOS API             |
-| `ONOS_SSH_PORT`                         | dynamic                                              | (advanced) Override dynamic port selection for port forward for ONOS SSH             |
-| `VOLTHA_API_PORT`                       | dynamic                                              | (advanced) Override dynamic port selection for port forward for VOLTHA API           |
-| `VOLTHA_SSH_PORT`                       | dynamic                                              | (advanced) Override dynamic port selection for port forward for VOLTHA SSH           |
-| `VOLTHA_ETCD_PORT`                      | dynamic                                              | (advanced) Override dynamic port selection for port forward for VOLTHA etcd          |
-| `VOLTHA_KAFKA_PORT`                     | dynamic                                              | (advanced) Override dynamic port selection for port forward for VOLTHA Kafka API     |
+| OPTION                                | DEFAULT                                               | DESCRIPTION |
+| ------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------ |
+| `TYPE`                                  | minimal                                               | `minimal` or `full` and determines number of cluster nodes and etcd cluster members |
+| `NAME`                                  | TYPE                                                  | Name of the KinD Cluster to be created |
+| `DEPLOY_K8S`                            | yes                                                   | Should the KinD Kubernetes cluster be deployed? |
+| `JUST_K8S`                              | no                                                    | Should just the KinD Kubernetes cluster be depoyed? (i.e. no VOLTHA) |
+| `WITH_BBSIM`                            | no                                                    | Should the BBSIM POD be deployed? |
+| `NUM_OF_BBSIM`                          | 1                                                     | number of BBSIM POD to start (minimum = 1, maximum = 10) |
+| `WITH_ONOS`                             | yes                                                   | Should `ONOS` service be deployed? |
+| `WITH_KAFKA`                            | yes                                                   | Deploy private Kafka (yes/no) or k8s servce:port of external Kafka |
+| `WITH_ETCD`                             | yes                                                   | Deploy private etcd (yes/no) or k8s service:port of external etcd |
+| `WITH_RADIUS`                           | no                                                    | Deploy sample RADIUS server (yes/no) or a k8s service:port of external RADIUS |
+| `WITH_EAPOL`                            | no                                                    | Configure the OLT app to push EAPOL flows |
+| `WITH_DHCP`                             | no                                                    | Configure the OLT app to push DCHP flows |
+| `WITH_IGMP`                             | no                                                    | Configure the OLT app to push IGMP flows |
+| `WITH_TIMINGS`                          | no                                                    | Outputs duration of various steps of the install |
+| `WITH_CHAOS`                            | no                                                    | Starts kube-monkey to introduce chaos |
+| `WITH_ADAPTERS`                         | yes                                                   | Should device adpters be installed, if no overrides options for specific adapters |
+| `WITH_SIM_ADAPTERS`                     | no                                                    | Should simulated device adapters be deployed (simulated adpaters deprecated) |
+| `WITH_OPEN_ADAPTERS`                    | yes                                                   | Should open OLT and ONU adapters be deployed |
+| `WITH_PORT_FORWARDS`                    | yes                                                   | Forwards ports for some services from localhost into the K8s cluster |
+| `CONFIG_SADIS`                          | no                                                    | Configure SADIS entries into ONOS. Values: `yes`, `no`, `file`, `url`, or `bbsim` |
+| `SADIS_SUBSCRIBERS`                     | http://bbsim.voltha.svc:50074/v2/subscribers/%s       | URL for ONOS to use to query subsriber information if `CONFIG_SADIS` is set to `url` |
+| `SADIS_BANDWIDTH_PROFILES`              | http://bbsim.voltha.svc:50074/v2/bandwidthprofiles/%s | URL for ONOS to use to query bandwidth profiles if `CONFIG_SADIS` is set to `url` |
+| `SADIS_CFG`                             | onos-files/onos-sadis-sample.json                     | SADIS Configuration File to push, if CONFIG_SADIS set |
+| `INSTALL_ONOS_APPS`                     | no                                                    | Replaces/installs ONOS OAR files in onos-files/onos-apps |
+| `INSTALL_KUBECTL`                       | yes                                                   | Should a copy of `kubectl` be installed locally? |
+| `INSTALL_HELM`                          | yes                                                   | Should a copy of `helm` be installed locallly? |
+| `VOLTHA_LOG_LEVEL`                      | WARN                                                  | Log level to set for VOLTHA core processes |
+| `ONOS_CHART`                            | onf/voltha                                            | Helm chart to used to install ONOS |
+| `ONOS_CHART_VERSION`                    | latest                                                | Version of helm chart for ONOS |
+| `VOLTHA_CHART`                          | onf/voltha                                            | Helm chart to used to install voltha |
+| `VOLTHA_CHART_VERSION`                  | latest                                                | Version of Helm chart to install voltha |
+| `VOLTHA_ADAPTER_SIM_CHART`              | onf/voltha-adapter-simulated                          | Helm chart to use to install simulated device adapter |
+| `VOLTHA_ADAPTER_SIM_CHART_VERSION`      | latest                                                | Version of Helm chart to install simulated device adapter |
+| `VOLTHA_BBSIM_CHART`                    | onf/bbsim                                             | Helm chart to use to install bbsim |
+| `VOLTHA_BBSIM_CHART_VERSION`            | latest                                                | Version of Helm chart to install bbim |
+| `VOLTHA_ADAPTER_OPEN_OLT_CHART`         | onf/voltha-adapter-openolt                            | Helm chart to use to install OpenOlt adapter |
+| `VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION` | latest                                                | Version of Helm chart to install OpenOlt adapter |
+| `VOLTHA_ADAPTER_OPEN_ONU_CHART`         | onf/voltha-adapter-openonu                            | Helm chart to use to install OpenOnu adapter |
+| `VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION` | latest                                                | Version of Helm chart to install OpenOnu adapter |
+| `ONLY_ONE`                              | yes                                                   | Run a single `rw-core`, no `api-server`, and no `ssh` CLI |
+| `ENABLE_ONOS_EXTRANEOUS_RULES`          | no                                                    | Set ONOS to allows flow rules not set via ONOS |
+| `UPDATE_HELM_REPOS`                     | yes                                                   | Update the Helm repository with the latest charts before installing |
+| `WAIT_ON_DOWN`                          | yes                                                   | When tearing down the VOLTHA, don't exit script until all containers are stoped |
+| `WAIT_TIMEOUT`                          | 30m                                                   | Time to wait before timing out on lengthy operations |
+| `KIND_VERSION`                          | v0.5.1                                                | Version of KinD to install if using a KinD cluster |
+| `VOLTCTL_VERSION`                       | latest                                                | Version of `voltctl` to install or up/downgrade to and use |
+| `ONOS_API_PORT`                         | dynamic                                               | (advanced) Override dynamic port selection for port forward for ONOS API |
+| `ONOS_SSH_PORT`                         | dynamic                                               | (advanced) Override dynamic port selection for port forward for ONOS SSH |
+| `VOLTHA_API_PORT`                       | dynamic                                               | (advanced) Override dynamic port selection for port forward for VOLTHA API |
+| `VOLTHA_SSH_PORT`                       | dynamic                                               | (advanced) Override dynamic port selection for port forward for VOLTHA SSH |
+| `VOLTHA_ETCD_PORT`                      | dynamic                                               | (advanced) Override dynamic port selection for port forward for VOLTHA etcd |
+| `VOLTHA_KAFKA_PORT`                     | dynamic                                               | (advanced) Override dynamic port selection for port forward for VOLTHA Kafka API |
 
 ### `CONFIG_SADIS` Values
 
-| VALUE            | DESCRIPTION     |
+| VALUE            | DESCRIPTION |
 | ---------------- | --------------- |
 | `yes` or `file`  | use the contents of a file to configure SADIS in ONOS. The file used defaults to<br>`onos-files/onos-sadis-sample.json` but can be specified via the `SADIS_CFG`<br>environment variable |
 | `no`             | do not configure ONOS for SADIS usage |
@@ -145,11 +147,11 @@
 `source` this file to set the configuration as well as establish key environment
 variables in order to access VOLTHA, including:
 
-| VARIABLE   | DESCRIPTION                                                                  |
+| VARIABLE   | DESCRIPTION |
 | ---------- | ---------------------------------------------------------------------------- |
 | KUBECONFIG | Sets the configuration file for the Kubernetes control application `kubectl` |
-| VOLTCONFIG | Sets the configuration file for the VOLTHA control application `voltctl`     |
-| PATH       | Augments the `PATH` to include `kubectl` and `voltctl`                       |
+| VOLTCONFIG | Sets the configuration file for the VOLTHA control application `voltctl` |
+| PATH       | Augments the `PATH` to include `kubectl` and `voltctl` |
 
 After `voltha up` is run, it is useful to source this file.
 
diff --git a/onos-files/onos-aaa.json b/onos-files/onos-aaa.json
index 82413fe..9f0ae11 100644
--- a/onos-files/onos-aaa.json
+++ b/onos-files/onos-aaa.json
@@ -1,8 +1,8 @@
 {
   "AAA": {
-    "radiusIp": ":RADIUS_IP:",
-    "nasIp": ":RADIUS_IP:",
-    "radiusServerPort": "1812",
+    "radiusConnectionType" : "socket",
+    "radiusHost": ":RADIUS_SVC:",
+    "radiusServerPort": ":RADIUS_PORT:",
     "radiusSecret": "SECRET"
   }
 }
diff --git a/onos-files/onos-kafka.json b/onos-files/onos-kafka.json
deleted file mode 100644
index 43eada6..0000000
--- a/onos-files/onos-kafka.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "kafka": {
-    "bootstrapServers": "voltha-kafka.voltha.svc.cluster.local:9092"
-  }
-}
diff --git a/voltha b/voltha
index 6e9dcda..b597a89 100755
--- a/voltha
+++ b/voltha
@@ -83,6 +83,8 @@
 WITH_SIM_ADAPTERS=${WITH_SIM_ADAPTERS:-no}
 WITH_OPEN_ADAPTERS=${WITH_OPEN_ADAPTERS:-yes}
 WITH_PORT_FORWARDS=${WITH_PORT_FORWARDS:-yes}
+WITH_KAFKA=${WITH_KAFKA:-yes}
+WITH_ETCD=${WITH_ETCD:-yes}
 ONLY_ONE=${ONLY_ONE:-yes}
 CONFIG_SADIS=${CONFIG_SADIS:-no} # yes | no | file | bbsim | URL
 SADIS_SUBSCRIBERS=${SADIS_SUBSCRIBERS:-http://bbsim.voltha.svc:50074/v2/subscribers/%s}
@@ -196,7 +198,6 @@
     ENABLE_ONOS_EXTRANEOUS_RULES \
     WITH_TIMINGS \
     WITH_BBSIM \
-    WITH_RADIUS \
     WITH_EAPOL \
     WITH_DHCP \
     WITH_IGMP \
@@ -248,6 +249,9 @@
     KIND_VERSION \
     VOLTCTL_VERSION \
     HELM_VERSION \
+    WITH_RADIUS \
+    WITH_KAFKA \
+    WITH_ETCD \
     "
 
 # Iterate over yes/no configuration options and validate
@@ -266,6 +270,20 @@
     CONFIG_SADIS="no"
 fi
 
+# Special case for WITH_KAFKA and WITH_ETCD
+if [ $(echo ":y:yes:true:1:" | grep -ic ":$WITH_KAFKA:") -eq 1 ]; then
+    WITH_KAFKA="yes"
+fi
+if [ $(echo ":n:no:false:0:" | grep -ic ":$WITH_KAFKA:") -eq 1 ]; then
+    WITH_KAFKA="no"
+fi
+if [ $(echo ":y:yes:true:1:" | grep -ic ":$WITH_ETCD:") -eq 1 ]; then
+    WITH_ETCD="yes"
+fi
+if [ $(echo ":n:no:false:0:" | grep -ic ":$WITH_ETCD:") -eq 1 ]; then
+    WITH_ETCD="no"
+fi
+
 # Check for prerequiste tools
 TOOLS="curl sed jq"
 if [ $DEPLOY_K8S == "yes" ]; then
@@ -717,16 +735,23 @@
     echo "Tearing down voltha cluster $NAME"
     LOG="down-$NAME.log"
     echo $(date -u +"%Y%m%dT%H%M%SZ") >$LOG
-    bspin "Remove port-forwards: onos-ui-$NAME"
-    kill_port_forward onos-ui
-    sspin "Remove port-forwards: onos-ssh-$NAME$CEOL"
-    kill_port_forward onos-ssh
+    if [ $WITH_ONOS == "yes" ]; then
+        bspin "Remove port-forwards: onos-ui-$NAME"
+        kill_port_forward onos-ui
+        sspin "Remove port-forwards: onos-ssh-$NAME$CEOL"
+        kill_port_forward onos-ssh
+    fi
     sspin "Remove port-forwards: voltha-api-$NAME$CEOL"
     kill_port_forward voltha-api
-    sspin "Remove port-forwards: voltha-etcd-$NAME$CEOL"
-    kill_port_forward voltha-etcd-cluster-client
-    sspin "Remove port-forwards: voltha-kafka-$NAME$CEOL"
-    kill_port_forward voltha-kafka
+    if [ $WITH_ETCD == "yes" ]; then
+        sspin "Remove port-forwards: voltha-etcd-$NAME$CEOL"
+        kill_port_forward voltha-etcd-cluster-client
+    fi
+    if [ $WITH_KAFKA == "yes" ]; then
+        sspin "Remove port-forwards: voltha-kafka-$NAME$CEOL"
+        kill_port_forward voltha-kafka
+    fi
+
     espin "$VERIFIED Remove port-forwards$CEOL"
     if [ $DEPLOY_K8S == "yes" ]; then
         if [ -x ./bin/kind ]; then
@@ -738,7 +763,22 @@
         fi
     else
         EXISTS=$(helm list -q)
-        EXPECT="etcd-operator onos open-olt open-onu sim voltha bbsim radius"
+        EXPECT="voltha etcd-operator"
+        if [ $WITH_ONOS == yes ]; then
+            EXPECT+=" onos"
+        fi
+        if [ $WITH_RADIUS == "yes" ]; then
+            EXPECT+=" radius"
+        fi
+        if [ $WITH_BBSIM == "yes" ]; then
+            EXPECT+=" bbsim"
+        fi
+        if [ $WITH_OPEN_ADAPTERS == "yes" ]; then
+            EXPECT+=" open-olt open-onu"
+        fi
+        if [ $WITH_SIM_ADAPTERS == "yes" ]; then
+            EXPECT+=" sim"
+        fi
         bspin "Remove Helm Deployments"
         for i in $EXISTS; do
             for j in $EXPECT; do
@@ -750,30 +790,21 @@
         done
         espin "$VERIFIED Remove Helm Deployments$CEOL"
         if [ "$WAIT_ON_DOWN" == "yes" ]; then
-            # There should only be 13 or 15 PODs in the kube-system name
-            # space and no other PODs
-            PODS="coredns-.* \
-                etcd-voltha-$NAME-control-plane \
-                kindnet-.* \
-                kube-apiserver-voltha-$NAME-control-plane \
-                kube-controller-manager-voltha-$NAME-control-plane \
-                kube-proxy-.* \
-                kube-scheduler-voltha-$NAME-control-plane \
-                tiller-deploy-.*"
-            EXPECT=$(test "$TYPE" == "minimal" && echo "13" || echo "15")
-            PODS="adapter-.* \
-                bbsim.* \
-                etcd-operator.* \
-                radius.* \
-                voltha-.*"
-
-            EXPECT=0
-
+            PODS="voltha-kafka.* voltha-ofagent.* voltha-rw-core.* voltha-etcd.* etcd-operator.*"
+            if [ $WITH_RADIUS == "yes" ]; then
+                PODS+=" radius.*"
+            fi
+            if [ $WITH_BBSIM == "yes" ]; then
+                PODS+=" bbsim.*"
+            fi
+            if [ $WITH_OPEN_ADAPTERS -o $WITH_SIM_ADAPTERS ]; then
+                PODS+=" adapter-*"
+            fi
             if [ "$WITH_ONOS" == "yes" ]; then
               ONOS_PODS="onos-.*"
-              wait_for_pods "default" $EXPECT "not" -1 "Waiting for ONOS PODs to terminate" $ONOS_PODS
-            fi
-            wait_for_pods "voltha" $EXPECT "not" -1 "Waiting for VOLTHA PODs to terminate" $PODS
+              wait_for_pods "default" 0 "not" -1 "Waiting for ONOS PODs to terminate" $ONOS_PODS
+            fi 
+            wait_for_pods "voltha" 0 "not" -1 "Waiting for VOLTHA PODs to terminate" $PODS
         fi
     fi
     exit
@@ -1224,18 +1255,23 @@
     exit 0
 fi
 
-STIME=$(date +%s)
-bspin "Verify ETCD Operator $OLD_KEY"
-if [ $(helm list --deployed --short --namespace voltha "^etcd-operator\$" | wc -l) -ne 1 ]; then
-    espin $NOT_VERIFIED
-    helm_install - voltha etcd-operator stable/etcd-operator latest "Install ETCD Operator"
+if [ $WITH_ETCD != "yes" ]; then
+    bspin "Skip ETCD Operator Deployment"
+    espin $NO_ENTRY
 else
-    espin $VERIFIED
-fi
-EXPECT=$(test "$TYPE" == "minimal" && echo "1" || echo "3")
-wait_for_pods - "voltha" $EXPECT "includes" -1 "Waiting for ETCD Operator to start" "etcd-operator-.*"
-if [ "$WITH_TIMINGS" == "yes" ]; then
-    printtime $(expr $(date +%s) - $STIME)
+    STIME=$(date +%s)
+    bspin "Verify ETCD Operator $OLD_KEY"
+    if [ $(helm list --deployed --short --namespace voltha "^etcd-operator\$" | wc -l) -ne 1 ]; then
+        espin $NOT_VERIFIED
+        helm_install - voltha etcd-operator stable/etcd-operator latest "Install ETCD Operator"
+    else
+        espin $VERIFIED
+    fi
+    EXPECT=$(test "$TYPE" == "minimal" && echo "1" || echo "3")
+    wait_for_pods - "voltha" $EXPECT "includes" -1 "Waiting for ETCD Operator to start" "etcd-operator-.*"
+    if [ "$WITH_TIMINGS" == "yes" ]; then
+        printtime $(expr $(date +%s) - $STIME)
+    fi
 fi
 
 STIME=$(date +%s)
@@ -1264,7 +1300,7 @@
     fi
     bspin - "Verify or download ONOS configuration support files $DOWNLOAD"
     ONOS_FILES="olt-onos-enableExtraneousRules.json onos-aaa.json \
-        onos-dhcpl2relay.json onos-kafka.json onos-sadis-sample.json"
+        onos-dhcpl2relay.json onos-sadis-sample.json"
     (set -x; mkdir -p ./onos-files  >>$LOG 2>&1) >>$LOG 2>&1
     ERR_OUT=$(mktemp)
     for i in $ONOS_FILES; do
@@ -1297,7 +1333,20 @@
     fi
 
     check_onos_app_active org.opencord.kafka
-    push_onos_config "file" "Push ONOS Kafka Configuration" "network/configuration/apps/org.opencord.kafka" "onos-files/onos-kafka.json"
+    if [ $WITH_KAFKA != "no" ]; then
+        _HOST=$(echo $WITH_KAFKA | cut -d: -f1)
+        _PORT=$(echo $WITH_KAFKA | cut -s -d: -f2)
+        _PORT=${_PORT:-9092}
+    fi
+    push_onos_config "json" "Push ONOS Kafka Configuration" "network/configuration/apps/org.opencord.sadis" \
+        "$(echo $(cat <<EOJ
+{
+    "kafka": {
+        "bootstrapServers": "$_HOST:$_PORT"
+    }
+}
+EOJ
+) | tr -d '[:space:]')"
     check_onos_app_active org.opencord.dhcpl2relay
     push_onos_config "file" "Push ONOS DHCP L2 Relay Configuration" "network/configuration/apps/org.opencord.dhcpl2relay" "onos-files/onos-dhcpl2relay.json"
     check_onos_app_active org.opencord.olt
@@ -1391,17 +1440,51 @@
 fi
 
 STIME=$(date +%s)
+EXPECT=1
+if [ "$ONLY_ONE" == "yes" ]; then
+    EXPECT=$((EXPECT+1))
+    INTERNAL_EXTRA_HELM_INSTALL_ARGS="--set therecanbeonlyone=true"
+else
+    EXPECT=$((EXPECT+2))
+fi
+if [ $WITH_ETCD != "yes" ]; then
+    INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set private_etcd_cluster=false"
+    if [ $WITH_ETCD != "no" ]; then
+        _HOST=$(echo $WITH_ETCD | cut -d: -f1)
+        _PORT=$(echo $WITH_ETCD | cut -s -d: -f2)
+        _PORT=${_PORT:-2379}
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.etcd.service=$_HOST --set services.etcd.port=$_PORT"
+    fi
+else
+    if [ $TYPE == "minimal" ]; then
+        EXPECT=$((EXPECT+1))
+    else
+        EXPECT=$((EXPECT+3))
+    fi
+fi
+if [ $WITH_KAFKA != "yes" ]; then
+    INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set private_kafka_cluster=false"
+    if [ $WITH_KAFKA != "no" ]; then
+        _HOST=$(echo $WITH_KAFKA | cut -d: -f1)
+        _PORT=$(echo $WITH_KAFKA | cut -s -d: -f2)
+        _PORT=${_PORT:-9092}
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
+    fi
+else
+    if [ $TYPE == "minimal" ]; then
+        EXPECT=$((EXPECT+2))
+    else
+        EXPECT=$((EXPECT+6))
+    fi
+fi
 bspin "Verify VOLTHA installed $HIGH_VOLTAGE"
 if [ $(helm list --deployed --short --namespace voltha "^voltha\$" | wc -l) -ne 1 ]; then
     espin $NOT_VERIFIED
-    if [ "$ONLY_ONE" == "yes" ]; then
-        INTERNAL_EXTRA_HELM_INSTALL_ARGS="--set therecanbeonlyone=true"
-    fi
     helm_install - voltha voltha $VOLTHA_CHART $VOLTHA_CHART_VERSION "Install VOLTHA Core"
-    INTERNAL_EXTRA_HELM_INSTALL_ARGS=
 else
     espin $VERIFIED
 fi
+INTERNAL_EXTRA_HELM_INSTALL_ARGS=
 
 VOLTHA="voltha-ofagent-.* \
     ro-core.* \
@@ -1410,11 +1493,6 @@
     voltha-etcd-cluster-.* \
     voltha-kafka-.* \
     voltha-zookeeper-.*"
-if [ "$ONLY_ONE" == "yes" ]; then
-    EXPECT=$(test "$TYPE" == "minimal" && echo "5" || echo "9")
-else
-    EXPECT=$(test "$TYPE" == "minimal" && echo "8" || echo "12")
-fi
 wait_for_pods - "voltha" $EXPECT "includes" -1 "Waiting for VOLTHA Core to start" $VOLTHA
 if [ "$WITH_TIMINGS" == "yes" ]; then
     printtime $(expr $(date +%s) - $STIME)
@@ -1423,6 +1501,22 @@
 if [ "$WITH_ADAPTERS" == "yes" ]; then
     STIME=$(date +%s)
     EXPECT=0
+    if [ $WITH_ETCD != "yes" ]; then
+        if [ $WITH_ETCD != "no" ]; then
+            _HOST=$(echo $WITH_ETCD | cut -d: -f1)
+            _PORT=$(echo $WITH_ETCD | cut -s -d: -f2)
+            _PORT=${_PORT:-2379}
+            INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.etcd.service=$_HOST --set services.etcd.port=$_PORT"
+        fi
+    fi
+    if [ $WITH_KAFKA != "yes" ]; then
+        if [ $WITH_KAFKA != "no" ]; then
+            _HOST=$(echo $WITH_KAFKA | cut -d: -f1)
+            _PORT=$(echo $WITH_KAFKA | cut -s -d: -f2)
+            _PORT=${_PORT:-9092}
+            INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
+        fi
+    fi
     echo -e "Verify Adapters $PLUG"
     if [ "$WITH_SIM_ADAPTERS" == "yes" ]; then
         bspin - "Verify Simulated Adapters installed"
@@ -1452,6 +1546,7 @@
         fi
         EXPECT=$(expr $EXPECT + 2)
     fi
+    INTERNAL_EXTRA_HELM_INSTALL_ARGS=
 
     ADAPTERS="adapter-.*"
     wait_for_pods - "voltha" $EXPECT "includes" -1 "Waiting for adapters to start" $ADAPTERS
@@ -1508,22 +1603,33 @@
     kill_port_forward voltha-api
     port_forward voltha voltha-api $VOLTHA_API_PORT 55555
     espin - $VERIFIED
-    bspin - "Forward VOLTHA ETCD port $FORWARD"
-    kill_port_forward voltha-etcd-cluster-client
-    port_forward voltha voltha-etcd-cluster-client $VOLTHA_ETCD_PORT 2379
-    espin - $VERIFIED
-    bspin - "Forward VOLTHA Kafka port $FORWARD"
-    kill_port_forward voltha-kafka
-    port_forward voltha voltha-kafka $VOLTHA_KAFKA_PORT 9092
-    espin - $VERIFIED
+    if [ $WITH_ETCD == "yes" ]; then
+        bspin - "Forward VOLTHA ETCD port $FORWARD"
+        kill_port_forward voltha-etcd-cluster-client
+        port_forward voltha voltha-etcd-cluster-client $VOLTHA_ETCD_PORT 2379
+        espin - $VERIFIED
+    fi
+    if [ $WITH_KAFKA == "yes" ]; then
+        bspin - "Forward VOLTHA Kafka port $FORWARD"
+        kill_port_forward voltha-kafka
+        port_forward voltha voltha-kafka $VOLTHA_KAFKA_PORT 9092
+        espin - $VERIFIED
+    fi
     if [ "$WITH_TIMINGS" == "yes" ]; then
         printtime $(expr $(date +%s) - $STIME)
     fi
 fi
 
-if [ $WITH_ONOS == "yes" -a $WITH_RADIUS == "yes" ]; then
+if [ $WITH_ONOS == "yes" -a $WITH_RADIUS != "no" ]; then
+    _HOST=radius.voltha.svc.cluster.local
+    _PORT=1812
+    if [ $WITH_RADIUS != "yes" ]; then
+        _HOST=$(echo $WITH_RADIUS | cut -d: -f1)
+        _PORT=$(echo $WITH_RADIUS | cut -s -d: -f2)
+        _PORT=${_PORT:-1812}
+    fi
     bspin "Configure ONOS RADIUS Connection $GEAR"
-    (set -x; cat onos-files/onos-aaa.json | sed -e "s/:RADIUS_IP:/$(kubectl -n voltha get service/radius -o jsonpath={.spec.clusterIP})/g" | curl --fail -sSL --user karaf:karaf -X POST http://$_ONOS_API_EP/onos/v1/network/configuration/apps/org.opencord.aaa -H Content-type:application/json -d@- >>$LOG 2>&1) >>$LOG 2>&1
+    (set -x; cat onos-files/onos-aaa.json | sed -e "s/:RADIUS_SVC:/$_HOST/g" -e "s/:RADIUS_PORT:/$_PORT/" | curl --fail -sSL --user karaf:karaf -X POST http://$_ONOS_API_EP/onos/v1/network/configuration/apps/org.opencord.aaa -H Content-type:application/json -d@- >>$LOG 2>&1) >>$LOG 2>&1
     espin $VERIFIED
 fi
 
