diff --git a/bin/compile b/bin/compile
index 9bad3a286b809168591bbe46a62afe113c8c07b6..a086861b20ecc591031c72ce59fe7b1c025a5b36 100755
--- a/bin/compile
+++ b/bin/compile
@@ -15,7 +15,7 @@ BIN_DIR=$(cd $(dirname $0); pwd) # absolute path
 ROOT_DIR=$(dirname $BIN_DIR)
 BUILD_DIR=$1
 CACHE_DIR=$2
-ENV_FILE=$3
+ENV_DIR=$3
 
 
 CACHED_DIRS=".heroku"
diff --git a/bin/utils b/bin/utils
index 68608148ba00b4504fa1f9f9ba417d4595d3455c..a8af9fbfc2baffcb5e2e11a1f277b9e59c2f2c12 100755
--- a/bin/utils
+++ b/bin/utils
@@ -59,10 +59,22 @@ function deep-rm (){
   find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \;
 }
 
-function sub-env (){
-  if [[ -f $ENV_FILE ]]; then
-    (export $(egrep -v '^(GIT_DIR|PYTHONHOME|PYTHONPATH|LD_LIBRARY_PATH|LIBRARY_PATH|PATH)' -f $ENV_FILE); $1)
-  else
+
+sub-env() {
+
+  WHITELIST=${2:-''}
+  BLACKLIST=${3:-'^(GIT_DIR|PYTHONHOME|PYTHONPATH|LD_LIBRARY_PATH|LIBRARY_PATH|PATH)$'}
+
+  (
+    if [ -d "$ENV_DIR" ]; then
+      for e in $(ls $ENV_DIR); do
+        echo "$e" | grep -E "$WHITELIST" | grep -qvE "$BLACKLIST" &&
+        export "$e=$(cat $ENV_DIR/$e)"
+        :
+      done
+    fi
+
     $1
-  fi
-}
+
+  )
+}
\ No newline at end of file