diff --git a/voltha b/voltha
index 6ea3deb..7aa1054 100755
--- a/voltha
+++ b/voltha
@@ -116,14 +116,14 @@
 # check number (range) of bbsim, max bbsim must not exceed 10 instances!
 # note: instances will be numbered from 0 to 9
 if [ "$1" == "up" ]; then
-	if [ "$NUM_OF_BBSIM" -lt 1 ]; then 
-			>&2 echo -e "${RED}${BOLD}${ERROR}ERROR:${NORMAL}${RED} Invalid setting of BBSIM instances. NUM_OF_BBSIM is less than 1${NORMAL}"
-			exit 1
-	fi
-	if [ "$NUM_OF_BBSIM" -gt $MAX_NUM_OF_BBSIM ]; then 
-			>&2 echo -e "${RED}${BOLD}${ERROR}ERROR:${NORMAL}${RED} Invalid setting of BBSIM instances. NUM_OF_BBSIM is greater than $MAX_NUM_OF_BBSIM${NORMAL}"
-			exit 1
-	fi
+    if [ "$NUM_OF_BBSIM" -lt 1 ]; then
+        >&2 echo -e "${RED}${BOLD}${ERROR}ERROR:${NORMAL}${RED} Invalid setting of BBSIM instances. NUM_OF_BBSIM is less than 1${NORMAL}"
+        exit 1
+    fi
+    if [ "$NUM_OF_BBSIM" -gt $MAX_NUM_OF_BBSIM ]; then
+        >&2 echo -e "${RED}${BOLD}${ERROR}ERROR:${NORMAL}${RED} Invalid setting of BBSIM instances. NUM_OF_BBSIM is greater than $MAX_NUM_OF_BBSIM${NORMAL}"
+        exit 1
+    fi
 fi
 # Verify TYPE setting
 if [ $(echo ":minimal:full:" | grep -ic ":$TYPE:") -eq 0 ]; then
@@ -648,12 +648,12 @@
         EXPECT="etcd-operator onos open-olt open-onu sim voltha bbsim radius"
         bspin "Remove Helm Deployments"
         for i in $EXISTS; do
-			for j in $EXPECT; do
-				if [[ $i =~ $j ]]; then
-                sspin "Remove Helm Deployments: $i$CEOL"
-                (set -x; ./bin/helm delete --no-hooks --purge $i >>$LOG 2>&1) >>$LOG 2>&1
-            fi
-        done
+            for j in $EXPECT; do
+                if [[ $i =~ $j ]]; then
+                    sspin "Remove Helm Deployments: $i$CEOL"
+                    (set -x; ./bin/helm delete --no-hooks --purge $i >>$LOG 2>&1) >>$LOG 2>&1
+                fi
+            done
         done
         espin "$VERIFIED Remove Helm Deployments$CEOL"
         if [ "$WAIT_ON_DOWN" == "yes" ]; then
@@ -926,7 +926,7 @@
         bspin - "Verify cluster configuration"
         if [ ! -r ./$NAME-cluster.cfg ]; then
             espin - $NOT_VERIFIED
-	        bspin - "Download cluster configuration: $TYPE-cluster.cfg to $NAME-cluster.cfg $DOWNLOAD"
+            bspin - "Download cluster configuration: $TYPE-cluster.cfg to $NAME-cluster.cfg $DOWNLOAD"
             ERR_OUT=$(mktemp)
             (set -x; curl --fail -o ./$NAME-cluster.cfg -sSL https://raw.githubusercontent.com/ciena/kind-voltha/$VK_RELEASE/$TYPE-cluster.cfg >>$LOG 2>>$ERR_OUT) >>$LOG 2>&1
             if [ $? -ne 0 ]; then
@@ -938,7 +938,7 @@
             fi
             rm -rf $ERR_OUT
         else
-	        espin - $VERIFIED
+            espin - $VERIFIED
         fi
         kind create cluster --name voltha-$NAME --config $NAME-cluster.cfg
      else
@@ -1284,19 +1284,19 @@
     STIME=$(date +%s)
     echo -e "Verify BBSIM $PLUG"
     bspin - "Verify BBSIM Installed"
-	for instance in $(seq 0 $(($NUM_OF_BBSIM-1))); do
-		if [ $instance -eq 0 ]; then
-			instance_num=""
-		else
-			instance_num=$instance
-		fi
-		if [ $(helm list --deployed --short --namespace voltha "^bbsim${instance_num}\$" | wc -l) -ne 1 ]; then
-			espin - $NOT_VERIFIED
-			helm_install - voltha bbsim${instance_num} $VOLTHA_BBSIM_CHART $VOLTHA_BBSIM_CHART_VERSION "Install BBSIM${instance_num}"
-		else
-			espin - $VERIFIED
-		fi
-	done
+    for instance in $(seq 0 $(($NUM_OF_BBSIM-1))); do
+        if [ $instance -eq 0 ]; then
+            instance_num=""
+        else
+            instance_num=$instance
+        fi
+        if [ $(helm list --deployed --short --namespace voltha "^bbsim${instance_num}\$" | wc -l) -ne 1 ]; then
+            espin - $NOT_VERIFIED
+            helm_install - voltha bbsim${instance_num} $VOLTHA_BBSIM_CHART $VOLTHA_BBSIM_CHART_VERSION "Install BBSIM${instance_num}"
+        else
+            espin - $VERIFIED
+        fi
+    done
     wait_for_pods - "voltha" $NUM_OF_BBSIM "includes" -1 "Waiting for BBSIM to start" "bbsim*"
     if [ "$WITH_TIMINGS" == "yes" ]; then
         printtime $(expr $(date +%s) - $STIME)
