diff --git a/voltha b/voltha
index ac8730c..f5adc4d 100755
--- a/voltha
+++ b/voltha
@@ -66,6 +66,7 @@
 
 TYPE=${TYPE:-minimal}
 NAME=${NAME:-$TYPE}
+WITH_TIMINGS=${WITH_TIMINGS:-no}
 WITH_BBSIM=${WITH_BBSIM:-no}
 WITH_RADIUS=${WITH_RADIUS:-no}
 WITH_ONOS=${WITH_ONOS:-yes}
@@ -207,6 +208,18 @@
     INSTALL_HELM=no
 fi
 
+# Verify WITH_TIMINGS settting and convert uniform value of yes or no
+if [ $(echo ":y:yes:true:n:no:false:1:0:" | grep -ic ":$WITH_TIMINGS:") -eq 0 ]; then
+    >&2 echo -e "${RED}${BOLD}${ERROR}ERROR:${NORMAL}${RED} Invalid \$WITH_TIMINGS value of '$WITH_TIMINGS'. Should be 'yes' or 'no'${NORMAL}"
+    exit 1
+fi
+
+if [ $(echo ":y:yes:true:1:" | grep -ic ":$WITH_TIMINGS:") -eq 1 ]; then
+    WITH_TIMINGS=yes
+else
+    WITH_TIMINGS=no
+fi
+
 mkdir -p .voltha
 touch .voltha/ports
 HAVE=$(grep $NAME .voltha/ports)
@@ -279,6 +292,7 @@
 }
 
 IDX=1
+CLOCK="TIME:"
 SPIN_PARTS=
 NOT_VERIFIED=
 VERIFIED=
@@ -308,6 +322,7 @@
             \xe2\xa2\x8c\xe2\xa1\xb1 \
             \xe2\xa2\x86\xe2\xa1\xb1 \
             "
+    CLOCK="\xe2\x8f\xb1"
     NOT_VERIFIED="\xe2\x9c\x97\x20"
     VERIFIED="\xe2\x9c\x93\x20"
     HELM="\xE2\x8E\x88"
@@ -326,6 +341,27 @@
     LOCK="\xf0\x9f\x94\x92"
 fi
 
+timeout() {
+    local INDENT=
+    if [ "$1" == "-" ]; then
+        INDENT="  "
+        shift
+    fi
+    local h=$(expr $1 / 3600)
+    local m=$(expr $1 % 3600 / 60)
+    local s=$(expr $1 % 60)
+    local t=""
+
+    if [ $h -gt 0 ]; then
+        t="$t${h}h"
+    fi
+    if [ $m -gt 0 ]; then
+        t="$t${m}m"
+    fi
+    t="$t${s}s"
+    echo -e "$INDENT  $CLOCK  $t"
+}
+
 bspin() {
     IDX=1
     local INDENT=
@@ -511,7 +547,7 @@
 
 # Output install options to log
 echo "OPTIONS" >> $LOG
-ALL_OPTIONS="NAME TYPE WITH_BBSIM WITH_RADIUS WITH_ONOS WITH_TP JUST_K8S DEPLOY_K8S \
+ALL_OPTIONS="NAME TYPE WITH_TIMINGS WITH_BBSIM WITH_RADIUS WITH_ONOS WITH_TP JUST_K8S DEPLOY_K8S \
     SKIP_RESTART_API INSTALL_KUBECTL INSTALL_HELM USE_GO VOLTHA_LOG_LEVEL \
     VOLTHA_CHART VOLTHA_ADAPTER_SIM_CHART VOLTHA_ADAPTER_OPEN_OLT_CHART \
     VOLTHA_ADAPTER_OPEN_ONU_CHART SADIS_VER OLT_VER AAA_VER DHCP_VER \
@@ -616,6 +652,7 @@
 mkdir -p $GOPATH/bin
 espin $VERIFIED
 
+STIME=$(date +%s)
 if [ "$INSTALL_KUBECTL" == "no" ]; then
     bspin "Skip kubectl install"
     espin $NO_ENTRY
@@ -631,7 +668,11 @@
         espin - $VERIFIED
     fi
 fi
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
+STIME=$(date +%s)
 if [ "$DEPLOY_K8S" == "no" ]; then
     bspin "Skip Kubernetes/Kind Deployment"
     espin $NO_ENTRY
@@ -648,6 +689,11 @@
     fi
 fi
 
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
+
+STIME=$(date +%s)
 if [ "$INSTALL_HELM" == "no" ]; then
     bspin "Skip Helm Install"
     espin $NO_ENTRY
@@ -662,7 +708,11 @@
         espin - $VERIFIED
     fi
 fi
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
+STIME=$(date +%s)
 bspin "Verify voltctl $HIGH_VOLTAGE"
 if [ -x $GOPATH/bin/voltctl ]; then
     espin $VERIFIED
@@ -673,11 +723,15 @@
     (set -x; chmod 755 $GOPATH/bin/voltctl >>$LOG 2>&1) >>$LOG 2>&1
     espin - $VERIFIED
 fi
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
 bspin "Verify command PATH"
 export PATH=$GOPATH/bin:$PATH
 espin $VERIFIED
 
+STIME=$(date +%s)
 if [ "$DEPLOY_K8S" == "yes" ]; then
     HAVE=$(kind get clusters | grep -c voltha-$NAME)
     bspin "Verify Kubernetes/Kind Cluster"
@@ -710,7 +764,11 @@
     EXPECT=$(test "$TYPE" == "minimal" && echo "12" || echo "14")
     wait_for_pods - "kube-system" $EXPECT -1 "Waiting for system PODs to start" $P
 fi
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
+STIME=$(date +%s)
 COUNT=$(count_pods "kube-system" "tiller-deploy-.*")
 bspin "Verify Helm"
 if [ $COUNT -ne 1 ]; then
@@ -765,7 +823,11 @@
     espin $VERIFIED
 fi
 wait_for_pods - "kube-system" 1 -1 "Waiting for Tiller POD to start" "tiller-deploy-.*"
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
+STIME=$(date +%s)
 bspin "Verify Helm values file: $NAME-values.yaml"
 if [ ! -r "./$NAME-values.yaml" ]; then
     espin $NOT_VERIFIED
@@ -775,6 +837,9 @@
 else
     espin $VERIFIED
 fi
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
 if [ "$JUST_K8S" == "yes" ]; then
     echo "Environment deployed, not deploying VOLTHA artifacts as requested. Good bye."
@@ -794,6 +859,7 @@
     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 
@@ -803,7 +869,11 @@
 fi
 EXPECT=$(test "$TYPE" == "minimal" && echo "1" || echo "3")
 wait_for_pods - "voltha" $EXPECT -1 "Waiting for ETCD Operator to start" "etcd-operator-.*"
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
+STIME=$(date +%s)
 if [ $WITH_ONOS == "yes" ]; then
     bspin "Verify ONOS installed $BIRD"
     if [ $(helm list --deployed --short --namespace default "^onos\$" | wc -l) -ne 1 ]; then
@@ -842,7 +912,11 @@
     (set -x; ./onos-files/install-onos-applications.sh >>$LOG 2>&1) >>$LOG 2>&1
     espin - $VERIFIED
 fi
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
+STIME=$(date +%s)
 bspin "Verify VOLTHA installed $HIGH_VOLTAGE"
 if [ $(helm list --deployed --short --namespace voltha "^voltha\$" | wc -l) -ne 1 ]; then
     espin $NOT_VERIFIED
@@ -861,7 +935,11 @@
     voltha-zookeeper-.*"
 EXPECT=$(test "$TYPE" == "minimal" && echo "9" || echo "11")
 wait_for_pods - "voltha" $EXPECT -1 "Waiting for VOLTHA Core to start" $VOLTHA
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
+STIME=$(date +%s)
 echo -e "Verify Adapters $PLUG"
 bspin - "Verify Simulated Adapters installed"
 if [ $(helm list --deployed --short --namespace voltha "^sim\$" | wc -l) -ne 1 ]; then
@@ -888,8 +966,12 @@
 
 ADAPTERS="adapter-.*"
 wait_for_pods - "voltha" 4 -1 "Waiting for adapters to start" $ADAPTERS
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
 if [ $WITH_BBSIM == "yes" ]; then
+    STIME=$(date +%s)
     echo -e "Verify BBSIM $PLUG"
     bspin - "Verify BBSIM Installed"
     if [ $(helm list --deployed --short --namespace voltha "^bbsim\$" | wc -l) -ne 1 ]; then
@@ -899,9 +981,13 @@
         espin - $VERIFIED
     fi
     wait_for_pods - "voltha" 1 -1 "Waiting for BBSIM to start" "bbsim-.*"
+    if [ "$WITH_TIMINGS" == "yes" ]; then
+        timeout $(expr $(date +%s) - $STIME)
+    fi
 fi
 
 if [ $WITH_RADIUS == "yes" ]; then
+    STIME=$(date +%s)
     echo -e "Verify RADIUS $LOCK"
     bspin - "Verify RADIUS Installed"
     if [ $(helm list --deployed --short --namespace voltha "^radius\$" | wc -l) -ne 1 ]; then
@@ -911,8 +997,12 @@
         espin - $VERIFIED
     fi
     wait_for_pods - "voltha" 1 -1 "Waiting for RADIUS to start" "radius-.*"
+    if [ "$WITH_TIMINGS" == "yes" ]; then
+        timeout $(expr $(date +%s) - $STIME)
+    fi
 fi
 
+STIME=$(date +%s)
 if [ $SKIP_RESTART_API == "no" ]; then
     echo -e "Restart VOLTHA API $RESTART"
     API="voltha-api-server-.* ofagent-.*"
@@ -943,6 +1033,9 @@
 done
 (set -x; screen -dmS voltha-etcd-$NAME bash -c "while true; do kubectl port-forward -n voltha service/voltha-etcd-cluster-client $VOLTHA_ETCD_PORT:2379; done" >>$LOG 2>&1) >>$LOG 2>&1
 espin - $VERIFIED
+if [ "$WITH_TIMINGS" == "yes" ]; then
+    timeout $(expr $(date +%s) - $STIME)
+fi
 
 if [ $WITH_ONOS == "yes" -a $WITH_RADIUS == "yes" ]; then
     bspin "Configure ONOS RADIUS Connection $GEAR"
