diff --git a/bin/tools/CleanFunctions b/bin/tools/CleanFunctions
index a0a667c60420df4faebb90dbfcd4f78b3a65e2a2..91867f1051d3d52fe62c85cb1261eb141b1ce353 100644
--- a/bin/tools/CleanFunctions
+++ b/bin/tools/CleanFunctions
@@ -97,29 +97,24 @@ cleanCase()
     rm -rf surfaceSampling > /dev/null 2>&1
     rm -rf cuttingPlane > /dev/null 2>&1
     rm -rf system/machines > /dev/null 2>&1
+    rm -rf Ensight EnSight ensightWrite VTK > /dev/null 2>&1
 
     # From mpirunDebug
     rm -f gdbCommands  mpirun.schema
 
     cleanSnappyFiles
-    if [ -d constant/polyMesh ]
-    then
-        rm -rf constant/polyMesh > /dev/null 2>&1
-    fi
+    rm -f 0/cellDist > /dev/null 2>&1
+
     if [ -d constant ]
     then
         (cd constant && \
             rm -rf \
-            cellToRegion cellLevel* pointLevel* \
+            cellDecomposition cellToRegion cellLevel* pointLevel* \
+            polyMesh tetDualMesh \
             > /dev/null 2>&1 \
         )
     fi
 
-    rm -rf constant/tetDualMesh > /dev/null 2>&1
-
-    rm -rf VTK > /dev/null 2>&1
-    rm -f 0/cellLevel 0/pointLevel 0/cellDist constant/cellDecomposition
-
     if [ -e system/blockMeshDict.m4 ]
     then
         rm -f system/blockMeshDict > /dev/null 2>&1
@@ -130,7 +125,7 @@ cleanCase()
 removeCase()
 {
     echo "Removing ${1:-unknown} case"
-    rm -rf $1
+    [ "$#" -ge 1 ] && rm -rf "$1"
 }
 
 
diff --git a/bin/tools/RunFunctions b/bin/tools/RunFunctions
index b73766b5d5af904c56c2e2d7bdf2fdf97339f7a7..f99ab370b509b491ab5e957b153386c1e481ceb4 100755
--- a/bin/tools/RunFunctions
+++ b/bin/tools/RunFunctions
@@ -42,23 +42,54 @@ isParallel()
 #
 isTest()
 {
-    for i in "$@"; do
-        if [ "$i" = "-test" ]
-        then
-            return 0
-        fi
-    done
+    for i; do [ "$i" = "-test" ] && return 0; done
     return 1
 }
 
+#
+# Extract 'numberOfSubdomains' from system/decomposeParDict
+# (or alternative location).
+#
+# On failure:
+#    return '1'
+#    exit status 1
+#
 getNumberOfProcessors()
 {
-    foamDictionary -entry numberOfSubdomains -value system/decomposeParDict
+    # Re-use positional parameters for automatic whitespace elimination
+    set -- $(foamDictionary -entry numberOfSubdomains -value "${1:-system/decomposeParDict}")
+
+    if [ "$#" -eq 1 ]
+    then
+        echo "$1"
+    else
+        echo "Error retrieving 'numberOfSubdomains' from decomposeParDict" 1>&2
+        echo 1
+        return 1
+    fi
 }
 
+
+#
+# Extract 'application' from system/controlDict
+#
+# On failure:
+#    return 'false' which is also a command (ie, shell builtin or /bin/false)
+#    exit status 1
+#
 getApplication()
 {
-    sed -ne 's/^ *application\s*\([a-zA-Z]*\)\s*;.*$/\1/p' system/controlDict
+    # Re-use positional parameters for automatic whitespace elimination
+    set -- $(foamDictionary -entry application -value system/controlDict)
+
+    if [ "$#" -eq 1 ]
+    then
+        echo "$1"
+    else
+        echo "Error retrieving 'application' from controlDict" 1>&2
+        echo false
+        return 1
+    fi
 }
 
 runApplication()