diff --git a/README.md b/README.md
index 91dadaf..44a2df3 100644
--- a/README.md
+++ b/README.md
@@ -119,6 +119,7 @@
 | `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             |
diff --git a/full-values.yaml b/full-values.yaml
index 0688676..e9402c1 100644
--- a/full-values.yaml
+++ b/full-values.yaml
@@ -36,9 +36,6 @@
 # information below (search for START_OFAGENT_GO).
 use_ofagent_go: true
 
-replicas:
-  cli: ~
-
 images:
   onos:
     repository: voltha/voltha-onos
@@ -73,12 +70,12 @@
 #    tag: master
 # START_OFAGENT_GO - Comment the following block to use the Python implementation
 # of the ofagent
-  ofagent:
-    repository: voltha/ofagent-go
-    tag: master
+#  ofagent:
+#    repository: voltha/voltha-ofagent-go
+#    tag: master
 # END_OFAGENT_GO
 #  ofagent:
-#    repository: voltha/voltha-ofagent
+#    repository: voltha/voltha-ofagent-py
 #    tag: 2.1.1
 #  rw_core:
 #    repository: voltha/voltha-rw-core
diff --git a/minimal-values.yaml b/minimal-values.yaml
index 6844b58..fdf4614 100644
--- a/minimal-values.yaml
+++ b/minimal-values.yaml
@@ -36,9 +36,6 @@
 # information below (search for START_OFAGENT_GO).
 use_ofagent_go: true
 
-replicas:
-  cli: ~
-
 images:
   onos:
     repository: voltha/voltha-onos
@@ -73,12 +70,12 @@
 #    tag: master
 # START_OFAGENT_GO - Comment the following block to use the Python implementation
 # of the ofagent
-  ofagent:
-    repository: voltha/ofagent-go
-    tag: master
+#  ofagent:
+#    repository: voltha/voltha-ofagent-go
+#    tag: master
 # END_OFAGENT_GO
 #  ofagent:
-#    repository: voltha/voltha-ofagent
+#    repository: voltha/voltha-ofagent-py
 #    tag: 2.1.1
 #  rw_core:
 #    repository: voltha/voltha-rw-core
diff --git a/voltha b/voltha
index 983882e..af9dc0e 100755
--- a/voltha
+++ b/voltha
@@ -94,6 +94,8 @@
 INSTALL_HELM=${INSTALL_HELM:-yes}
 UPDATE_HELM_REPOS=${UPDATE_HELM_REPOS:-yes}
 WAIT_ON_DOWN=${WAIT_ON_DOWN:-yes}
+WAIT_TIMEOUT=${WAIT_TIMEOUT:-30m}
+VOLTHA_DOWN_ON_TIMEOUT=${VOLTHA_DOWN_ON_TIMEOUT:-no}
 VOLTHA_LOG_LEVEL=${VOLTHA_LOG_LEVEL:-WARN}
 VOLTHA_CHART=${VOLTHA_CHART:-onf/voltha}
 VOLTHA_CHART_VERSION=${VOLTHA_CHART_VERSION:-latest}
@@ -137,6 +139,34 @@
     exit 1
 fi
 
+function parseDuration() {
+    local DUR=$1
+    local RESULT=0
+    local TERMS=$(echo $DUR | sed -e 's/\([sSmMhHdD]\)/\1 /g' -e 's/,$//g')
+    for TERM in $TERMS; do
+       local VALUE=$(echo $TERM | sed -e 's/\([0-9]\+\)[sSmMhHdD]/\1/')
+       local UNIT=$(echo $TERM | sed -e 's/[0-9]\+\([sSmMhHdD]\)/\1/')
+       case $UNIT in
+          s|S)
+             RESULT=$(($RESULT + $VALUE)) ;;
+          m|M)
+             RESULT=$(($RESULT + ($VALUE * 60))) ;;
+          h|H)
+             RESULT=$(($RESULT + ($VALUE * 3600))) ;;
+          d|D)
+             RESULT=$(($RESULT + ($VALUE * 86400))) ;;
+          *) ;;
+       esac
+    done
+    echo $RESULT
+}
+
+function doTimeout() {
+    local MSG=$1
+    2>&1 echo -e "\n${RED}${BOLD}${ERROR}TIMEOUT:${NORMAL}${RED} Operation timed out after '$WAIT_TIMEOUT': $MSG"
+    exit 125
+}
+
 function get_service_ep() {
     local NS=$1
     local NAME=$2
@@ -183,12 +213,14 @@
     UPDATE_HELM_REPOS \
     WAIT_ON_DOWN \
     ONLY_ONE \
+    VOLTHA_DOWN_ON_TIMEOUT \
     "
 
 ALL_OPTIONS="\
     NAME \
     TYPE \
     $ALL_YES_NO \
+    WAIT_TIMEOUT \
     VOLTHA_LOG_LEVEL \
     VOLTHA_CHART \
     VOLTHA_CHART_VERSION \
@@ -241,6 +273,8 @@
     exit 1
 fi
 
+TIMEOUT_SECONDS=$(parseDuration $WAIT_TIMEOUT)
+
 mkdir -p .voltha
 touch .voltha/ports
 HAVE=$(grep $NAME .voltha/ports)
@@ -453,9 +487,14 @@
     local CMD_ECHO=$(mktemp -u)
     local CMD_OUTPUT=$(mktemp -u)
     local SC_OUTPUT=$(mktemp -u)
+    local WAIT_START=$(date +%s)
 
     bspin - "$MSG $GEAR"
     while true; do
+        if [ $(($(date +%s) - $WAIT_START)) -gt $TIMEOUT_SECONDS ]; then
+            espin - "$THEX"
+            doTimeout "waiting for ONOS config push on $RESOURCE"
+        fi
         if [ $TYPE == "file" ]; then
             (set -x; curl --fail -sSL --user karaf:karaf -w "%{http_code}" -o $CMD_OUTPUT -X POST -H Content-Type:application/json http://$_ONOS_API_EP/onos/v1/$RESOURCE --data @$DATA >$SC_OUTPUT 2>/dev/null) >>$CMD_ECHO 2>&1
             RESULT=$?
@@ -483,25 +522,36 @@
 }
 
 check_onos_app_active() {
-  local APP_ID=$1
+    local APP_ID=$1
+    local WAIT_START=$(date +%s)
 
-  bspin - "Checking that $APP_ID is active $CLOCK"
-  while true; do
-      (set -x; curl --fail -sSL --user karaf:karaf -X GET http://$_ONOS_API_EP/onos/v1/applications/$APP_ID | grep ACTIVE >>$LOG 2>&1) >>$LOG 2>&1
-      if [ $? -eq 0 ]; then
-          break
-      fi
-      sleep 1
-      sspin -
-  done
-  sleep 5 # OSGI components take a little longer that the app to activate
-  espin - $VERIFIED
+    bspin - "Checking that $APP_ID is active $CLOCK"
+    while true; do
+        if [ $(($(date +%s) - $WAIT_START)) -gt $TIMEOUT_SECONDS ]; then
+            espin - "$THEX"
+            doTimeout "waiting for ONOS application activation '$APP_ID'"
+        fi
+        (set -x; curl --fail -sSL --user karaf:karaf -X GET http://$_ONOS_API_EP/onos/v1/applications/$APP_ID | grep ACTIVE >>$LOG 2>&1) >>$LOG 2>&1
+        if [ $? -eq 0 ]; then
+            break
+        fi
+        sleep 1
+        sspin -
+    done
+    sleep 5 # OSGI components take a little longer that the app to activate
+    espin - $VERIFIED
 }
 
 override_onos_app() {
     local APP=$1
     local NAME=$(basename $APP | sed -e 's/^[0-9][0-9]*-//g' -e 's/-.*$//g')
+    local WAIT_START=$(date +%s)
+
     while true; do
+        if [ $(($(date +%s) - $WAIT_START)) -gt $TIMEOUT_SECONDS ]; then
+            espin - "$THEX"
+            doTimeout "waiting to overwrite ONOS application '$APP'"
+        fi
         sspin -
         # Attempt to delete old version (if it exists)
         (set -x; curl --fail -sSL --user karaf:karaf -X DELETE http://$_ONOS_API_EP/onos/v1/applications/$NAME >>$LOG 2>&1) >>$LOG 2>&1
@@ -520,9 +570,14 @@
 activate_onos_app() {
     local MSG="$1"
     local APP=$2
+    local WAIT_START=$(date +%s)
 
     bspin - "$MSG $GO"
     while true; do
+        if [ $(($(date +%s) - $WAIT_START)) -gt $TIMEOUT_SECONDS ]; then
+            espin - "$THEX"
+            doTimeout "waiting to activate ONOS application '$APP'"
+        fi
         sspin -
         (set -x; curl --fail -sSL --user karaf:karaf -X POST http://$_ONOS_API_EP/onos/v1/applications/$APP/active >>$LOG 2>&1) >>$LOG 2>&1
         if [ $? -eq 0 ]; then
@@ -585,10 +640,15 @@
         ALL=$(count_pods "all-namespaces" "*" ".*")
     fi
     COUNT=$(expr 300 / 15)
+    local WAIT_START=$(date +%s)
     bspin $INDENT $MESSAGE
     sspin $INDENT
     if [ $HAVE -ne $EXPECT -o $ALL -ne $HAVE ]; then
         while [ $HAVE -ne $EXPECT -o $ALL -ne $HAVE ]; do
+            if [ $(($(date +%s) - $WAIT_START)) -gt $TIMEOUT_SECONDS ]; then
+                espin $INDENT "$THEX"
+                doTimeout "waiting for PODs to start"
+            fi
             sspin $INDENT
             COUNT=$(expr $COUNT - 1)
             if [ $COUNT -eq 0 ]; then
@@ -807,11 +867,16 @@
         CHART_ARGS="-f ${INAME}-values.yaml"
     fi
 
+    local WAIT_START=$(date +%s)
     COUNT=$(expr 300 / 15)
     bspin $INDENT $MESSAGE
     (set -x; helm install -f $NAME-values.yaml $CHART_ARGS $INTERNAL_EXTRA_HELM_INSTALL_ARGS $EXTRA_HELM_INSTALL_ARGS --set defaults.log_level=$VOLTHA_LOG_LEVEL --namespace $NAMESPACE --name $INAME $CHART_VERSION $EXTRA_HELM_FLAGS $CHART >>$LOG 2>&1) >>$LOG 2>&1
     SUCCESS=$?
     while [ $SUCCESS -ne 0 ]; do
+        if [ $(($(date +%s) - $WAIT_START)) -gt $TIMEOUT_SECONDS ]; then
+            espin "$THEX"
+            doTimeout "waiting for helm install $CHART"
+        fi
         sspin $INDENT
         COUNT=$(expr $COUNT - 1)
         if [ $COUNT -eq 0 ]; then
