diff --git a/tools/test/bin/onos-cell b/tools/test/bin/onos-cell
index 45a68b9..f2b9908 100755
--- a/tools/test/bin/onos-cell
+++ b/tools/test/bin/onos-cell
@@ -1,9 +1,53 @@
 #!/bin/bash
 # -----------------------------------------------------------------------------
-# List available ONOS cells configuration.
+# Applies the settings in the specified cell file or lists current cell
+# definition if no cell file is given.
 # -----------------------------------------------------------------------------
 
-[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
-. $ONOS_ROOT/tools/dev/bash_profile
+cell=$1
+case "$cell" in
+"borrow")
+    aux="/tmp/cell-$$"
+    curl -sS -X POST "http://$CELL_WARDEN:4321/?duration=${2:-0}&user=${3:-$(id -un)}" \
+        -d "$(cat ~/.ssh/id_rsa.pub)" > $aux
+    . $aux
+    rm -f $aux
+    export ONOS_INSTANCES=$(env | grep 'OC[0-9]*=' | sort | cut -d= -f2)
+    setPrimaryInstance 1 >/dev/null
+    onos-verify-cell
+    ;;
+"return")
+    curl -sS -X DELETE "http://$CELL_WARDEN:4321/?user=${2:-$(id -un)}"
+    unset ONOS_CELL ONOS_NIC ONOS_IP ONOS_APPS ONOS_BOOT_FEATURES
+    unset OCI OCN OCT ONOS_INSTANCES ONOS_FEATURES
+    unset $(env | sed -n 's:\(^OC[0-9]\{1,\}\)=.*:\1 :g p')
+    ;;
 
-cell "$@"
\ No newline at end of file
+"status")
+    curl -sS "http://$CELL_WARDEN:4321/" | sort
+    ;;
+
+"")
+    env | egrep "ONOS_CELL"
+    env | egrep "OCI"
+    env | egrep "OC[0-9]+" | sort
+    env | egrep "OC[NT]"
+    env | egrep "ONOS_" | egrep -v 'ONOS_ROOT|ONOS_CELL|ONOS_INSTANCES' | sort
+    ;;
+
+*)
+    [ ! -f $ONOS_ROOT/tools/test/cells/$1 ] && \
+        echo "No such cell: $1" >&2 && return 1
+    unset ONOS_CELL ONOS_NIC ONOS_IP ONOS_APPS ONOS_BOOT_FEATURES
+    unset OCI OCN OCT ONOS_INSTANCES ONOS_FEATURES
+    unset $(env | sed -n 's:\(^OC[0-9]\{1,\}\)=.*:\1 :g p')
+    export ONOS_USER=${ONOS_USER:-sdn}
+    export ONOS_GROUP=${ONOS_GROUP:-sdn}
+    export ONOS_WEB_USER=onos
+    export ONOS_WEB_PASS=rocks
+    export ONOS_CELL=$1
+    . $ONOS_ROOT/tools/test/cells/$1
+    export ONOS_INSTANCES=$(env | grep 'OC[0-9]*=' | sort | cut -d= -f2)
+    setPrimaryInstance 1 >/dev/null
+    cell
+esac
\ No newline at end of file
