diff --git a/tools/package/runtime/bin/_find-node b/tools/package/runtime/bin/_find-node
index 3f65474..744d955 100644
--- a/tools/package/runtime/bin/_find-node
+++ b/tools/package/runtime/bin/_find-node
@@ -24,30 +24,26 @@
 validate_number () {
     local re="^[0-9]+$"
     if [[ ! $1 =~ $re ]] ; then
-    return 1
+        return 1
     fi
-
     return 0
 }
 
 find_node () {
     if validate_number $1 ; then
-    # input is a number, try to find if an OC node is defined
+        # input is a number, try to find if an OC node is defined
+        oc_try="OC$1"
+        node=${!oc_try}
 
-    oc_try="OC$1"
-    node=${!oc_try}
-
-    if [ -n "$node" ]; then
+        if [ -n "$node" ]; then
             # node lookup succeeded, return node
-        echo $node
-    else
+            echo $node
+        else
             # node lookup failed, return original input
+            echo $1
+        fi
+    else
         echo $1
     fi
-
-    else
-    echo $1
-    fi
-
     return 0
 }
diff --git a/tools/package/runtime/bin/onos-app b/tools/package/runtime/bin/onos-app
index 1c30c42..7ea93a7 100755
--- a/tools/package/runtime/bin/onos-app
+++ b/tools/package/runtime/bin/onos-app
@@ -20,14 +20,10 @@
 # Tool to manage ONOS applications using REST API.
 # -----------------------------------------------------------------------------
 
-# If ONOS_HOME is set, respect its value.
-# If ONOS_HOME is not set (e.g. in the init or service environment),
-# set it based on this script's path.
-ONOS_HOME=${ONOS_HOME:-$(cd $(dirname $0)/.. >/dev/null 2>&1 && pwd)}
-ONOS_WEB_USER=${ONOS_WEB_USER:-onos} # ONOS WEB User defaults to 'onos'
+ONOS_WEB_USER=${ONOS_WEB_USER:-onos}  # ONOS WEB User defaults to 'onos'
 ONOS_WEB_PASS=${ONOS_WEB_PASS:-rocks} # ONOS WEB Password defaults to 'rocks'
 
-. ${ONOS_HOME}/bin/_find-node
+. $(dirname $0)/_find-node
 
 node=$(find_node $1)
 cmd=${2:-list}
diff --git a/tools/package/runtime/bin/onos-cfg b/tools/package/runtime/bin/onos-cfg
index 6b02dfa..6855d03 100755
--- a/tools/package/runtime/bin/onos-cfg
+++ b/tools/package/runtime/bin/onos-cfg
@@ -20,19 +20,15 @@
 # Tool to manage ONOS component configurations using REST API.
 # -----------------------------------------------------------------------------
 
-# If ONOS_HOME is set, respect its value.
-# If ONOS_HOME is not set (e.g. in the init or service environment),
-# set it based on this script's path.
-ONOS_HOME=${ONOS_HOME:-$(cd $(dirname $0)/.. >/dev/null 2>&1 && pwd)}
-ONOS_WEB_USER=${ONOS_WEB_USER:-onos} # ONOS WEB User defaults to 'onos'
+ONOS_WEB_USER=${ONOS_WEB_USER:-onos}  # ONOS WEB User defaults to 'onos'
 ONOS_WEB_PASS=${ONOS_WEB_PASS:-rocks} # ONOS WEB Password defaults to 'rocks'
 
+. $(dirname $0)/_find-node
+. $(dirname $0)/_check-json
+
 fail="--fail"
 [ "$1" == "-v" ] && shift && fail=""
 
-. ${ONOS_HOME}/bin/_find-node
-. ${ONOS_HOME}/bin/_check-json
-
 node=$(find_node $1)
 cmd=${2:-list}
 component=${3}
diff --git a/tools/package/runtime/bin/onos-compile-yang b/tools/package/runtime/bin/onos-compile-yang
index 855167c..e1bb987 100755
--- a/tools/package/runtime/bin/onos-compile-yang
+++ b/tools/package/runtime/bin/onos-compile-yang
@@ -20,14 +20,10 @@
 # Tool to compile the specified YANG file(s) using the ONOS live compilation.
 # -----------------------------------------------------------------------------
 
-# If ONOS_HOME is set, respect its value.
-# If ONOS_HOME is not set (e.g. in the init or service environment),
-# set it based on this script's path.
-ONOS_HOME=${ONOS_HOME:-$(cd $(dirname $0)/.. >/dev/null 2>&1 && pwd)}
-ONOS_WEB_USER=${ONOS_WEB_USER:-onos} # ONOS WEB User defaults to 'onos'
+ONOS_WEB_USER=${ONOS_WEB_USER:-onos}  # ONOS WEB User defaults to 'onos'
 ONOS_WEB_PASS=${ONOS_WEB_PASS:-rocks} # ONOS WEB Password defaults to 'rocks'
 
-. ${ONOS_HOME}/bin/_find-node
+. $(dirname $0)/_find-node
 
 node=$(find_node $1)
 yang=$2
diff --git a/tools/package/runtime/bin/onos-diagnostics b/tools/package/runtime/bin/onos-diagnostics
index 442b1fd..4ab9bf5 100755
--- a/tools/package/runtime/bin/onos-diagnostics
+++ b/tools/package/runtime/bin/onos-diagnostics
@@ -19,6 +19,12 @@
 # -----------------------------------------------------------------------------
 # Tool to collect cluster-wide diagnostics into a single tar stream.
 # -----------------------------------------------------------------------------
+
+ONOS_WEB_USER=${ONOS_WEB_USER:-onos}  # ONOS WEB User defaults to 'onos'
+ONOS_WEB_PASS=${ONOS_WEB_PASS:-rocks} # ONOS WEB Password defaults to 'rocks'
+
+. $(dirname $0)/_find-node
+
 function usage() {
     echo "usage: $(basename $0) [-x] [-n name] [-u user] [-p password] [ip1 ip2...]"
     echo ""
@@ -69,6 +75,9 @@
     "ports -e"
     "portstats -nz"
 
+    "packet-processors"
+    "packet-requests"
+
     "intents"
     "flows -s"
     "groups"
@@ -93,8 +102,7 @@
         *) usage;;
     esac
 done
-ONOS_WEB_USER=${ONOS_WEB_USER:-onos} # ONOS WEB User defaults to 'onos'
-ONOS_WEB_PASS=${ONOS_WEB_PASS:-rocks} # ONOS WEB Password defaults to 'rocks'
+
 user=${user:-$ONOS_WEB_USER}
 password=${password:-$ONOS_WEB_PASS}
 let OPC=$OPTIND-1
@@ -118,7 +126,7 @@
     printf "logs "
     curl -sS --fail --user $user:$password  \
         http://$node:8181/onos/v1/diagnostics > ../$node.tar.gz
-    tar zxf ../$node.tar.gz
+    tar zxf ../$node.tar.gz && rm ../$node.tar.gz
 
     # Acquire remotely obtained diagnostics via ssh CLI
     for cmd in "${CLI_COMMANDS[@]}"; do
@@ -127,9 +135,7 @@
         onos $node $cmd 2>/dev/null >$cmdLog
     done
 
-    # Tar-up local and remote diagnostics together
     printf " Done.\n"
-    tar zcf ../$node.tar.gz *
 done
 
 # Tar-up diagnostics from all the nodes
diff --git a/tools/package/runtime/bin/onos-netcfg b/tools/package/runtime/bin/onos-netcfg
index 17552ac..5e22836 100755
--- a/tools/package/runtime/bin/onos-netcfg
+++ b/tools/package/runtime/bin/onos-netcfg
@@ -20,15 +20,11 @@
 # ONOS network configuration uploader.
 # -----------------------------------------------------------------------------
 
-# If ONOS_HOME is set, respect its value.
-# If ONOS_HOME is not set (e.g. in the init or service environment),
-# set it based on this script's path.
-ONOS_HOME=${ONOS_HOME:-$(cd $(dirname $0)/.. >/dev/null 2>&1 && pwd)}
-ONOS_WEB_USER=${ONOS_WEB_USER:-onos} # ONOS WEB User defaults to 'onos'
+ONOS_WEB_USER=${ONOS_WEB_USER:-onos}  # ONOS WEB User defaults to 'onos'
 ONOS_WEB_PASS=${ONOS_WEB_PASS:-rocks} # ONOS WEB Password defaults to 'rocks'
 
-. ${ONOS_HOME}/bin/_find-node
-. ${ONOS_HOME}/bin/_check-json
+. $(dirname $0)/_find-node
+. $(dirname $0)/_check-json
 
 fail="--fail"
 [ "$1" == "-v" ] && shift && fail=""
diff --git a/tools/package/runtime/bin/onos-node-diagnostics b/tools/package/runtime/bin/onos-node-diagnostics
index 1cb18b5..f5dd520 100755
--- a/tools/package/runtime/bin/onos-node-diagnostics
+++ b/tools/package/runtime/bin/onos-node-diagnostics
@@ -20,10 +20,7 @@
 # Tool to collect node-specific diagnostics into a single tar stream.
 # -----------------------------------------------------------------------------
 
-# If ONOS_HOME is set, respect its value.
-# If ONOS_HOME is not set (e.g. in the init or service environment),
-# set it based on this script's path.
-ONOS_HOME=${ONOS_HOME:-$(cd $(dirname $0)/.. >/dev/null 2>&1 && pwd)}
+ONOS_HOME=$(cd $(dirname $0)/.. >/dev/null 2>&1 && pwd)
 
 diag=/tmp/diag$$
 mkdir -p $diag; cd $diag
