diff --git a/test/ete/scripts/teardown-onap.sh b/test/ete/scripts/teardown-onap.sh
index 9080e20..61e643b 100755
--- a/test/ete/scripts/teardown-onap.sh
+++ b/test/ete/scripts/teardown-onap.sh
@@ -1,49 +1,110 @@
 #!/bin/bash -x
 
+full_deletion=false
+
+usage() { echo "Usage: $0 [-n <string>] [-r]" 1>&2; exit 1; }
+
+while getopts ":rqn:" o; do
+    case "${o}" in
+
+        r)
+            echo "The following command will delete all information relating to onap within your enviroment"
+            read -p "Are you certain this is what you want? (type y to confirm):" answer
+
+            if [ $answer = "y" ] || [ $answer = "Y" ] || [ $answer = "yes" ] || [ $answer = "Yes"]; then
+                echo "This may delete the work of other colleages within the same enviroment"
+                read -p "Are you certain this is what you want? (type y to confirm):" answer2
+                
+                if [ $answer2 = "y" ] || [ $answer2 = "Y" ] || [ $answer2 = "yes" ] || [ $answer2 = "Yes"]; then
+                    full_deletion=true
+                else 
+                    echo "Ending program"
+                    exit 1
+                fi
+            else 
+                echo "Ending program"
+                exit 1
+            fi
+            ;;
+        q)
+            full_deletion=true
+            ;;
+        n)
+            install_name=${OPTARG}
+            ;;
+
+        *)
+            usage
+            ;;
+    esac
+done
+shift $((OPTIND-1))
+
 if [ -z "$WORKSPACE" ]; then
     export WORKSPACE=`git rev-parse --show-toplevel`
 fi
 
 source $WORKSPACE/test/ete/scripts/install_openstack_cli.sh
 
-# delete all instances
-openstack server delete $(openstack server list -c ID -f value)
-sleep 1
+if [ "$full_deletion" = true ];then 
+    echo "Commencing delete, press CRTL-C to stop"
+    sleep 10
 
-# miscellaneous cleanup
-openstack floating ip delete $(openstack floating ip list -c ID -f value)
-sleep 1
+    # delete all instances
+    openstack server delete $(openstack server list -c ID -f value)
+    sleep 1
 
-ROUTERS=$(openstack router list -c ID -f value)
-echo $ROUTERS
-for ROUTER in $ROUTERS; do
-    echo $ROUTER;
-    PORTS=$(openstack router show $ROUTER  -c "interfaces_info" -f "value" | jq -r '.[].port_id')
-    for PORT in $PORTS; do
-        openstack router remove port $ROUTER $PORT
-    done
-    openstack router delete $ROUTER
-done
+    # miscellaneous cleanup
+    openstack floating ip delete $(openstack floating ip list -c ID -f value)
+    sleep 1
 
-openstack port delete $(openstack port list -f value -c ID)
-openstack volume delete $(openstack volume list -f value -c ID)
-
-# delete all except "default" security group
-SECURITY_GROUPS=$(openstack security group list -c ID -f value | grep -v default)
-openstack security group delete $SECURITY_GROUPS
-sleep 1
-
-
-# Delete all existing stacks
-STACKS=$(openstack stack list -c "Stack Name" -f value)
-
-if [ ! -z "${STACKS}" ]; then
-    openstack stack delete -y $STACKS
-    for STACK in ${STACKS}; do
-        until [ "DELETE_IN_PROGRESS" != "$(openstack stack show -c stack_status -f value $STACK)" ]; do
-            sleep 2
+    ROUTERS=$(openstack router list -c ID -f value)
+    echo $ROUTERS
+    for ROUTER in $ROUTERS; do
+        echo $ROUTER;
+        PORTS=$(openstack router show $ROUTER  -c "interfaces_info" -f "value" | jq -r '.[].port_id')
+        for PORT in $PORTS; do
+            openstack router remove port $ROUTER $PORT
         done
+        openstack router delete $ROUTER
     done
-else
-    echo "No existing stacks to delete."
-fi
+
+    openstack port delete $(openstack port list -f value -c ID)
+    openstack volume delete $(openstack volume list -f value -c ID)
+
+    # delete all except "default" security group
+    SECURITY_GROUPS=$(openstack security group list -c ID -f value | grep -v default)
+    openstack security group delete $SECURITY_GROUPS
+    sleep 1
+
+
+    # Delete all existing stacks
+    STACKS=$(openstack stack list -c "Stack Name" -f value)
+
+    if [ ! -z "${STACKS}" ]; then
+        openstack stack delete -y $STACKS
+        for STACK in ${STACKS}; do
+            until [ "DELETE_IN_PROGRESS" != "$(openstack stack show -c stack_status -f value $STACK)" ]; do
+                sleep 2
+            done
+        done
+    else
+        echo "No existing stacks to delete."
+    fi
+
+else 
+    #Restrained teardown 
+    echo "Restrained teardown"
+    
+    STACK=$install_name
+
+    if [ ! -z "${STACK}" ]; then
+        openstack stack delete $STACK
+        
+        until [ "DELETE_IN_PROGRESS" != "$(openstack stack show -c stack_status -f value $STACK)" ]; do
+        sleep 2
+        done
+    else
+        echo "No existing stack with the name $install_name."
+    fi
+fi
\ No newline at end of file
