diff --git a/bin/compile b/bin/compile
index 035b36e4726937f1072f450f4df63b284ffd7237..898fc69552abce2168679ede1d0c452c8e6821ca 100755
--- a/bin/compile
+++ b/bin/compile
@@ -201,6 +201,9 @@ source $BIN_DIR/steps/pylibmc
 # Libffi support.
 source $BIN_DIR/steps/cryptography
 
+# Support for Geo libraries.
+sub-env $BIN_DIR/steps/geo-libs
+
 # GDAL support.
 source $BIN_DIR/steps/gdal
 
diff --git a/bin/steps/gdal b/bin/steps/gdal
index 6f15f4c63e2e419c141ccdda8671fd22f66333ce..2ebe12ec574163b476318fb74bdb5fabc3e2b670 100755
--- a/bin/steps/gdal
+++ b/bin/steps/gdal
@@ -11,8 +11,6 @@
 
 # The location of the pre-compiled cryptography binary.
 VENDORED_GDAL="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/gdal.tar.gz"
-VENDORED_GEOS="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/geos.tar.gz"
-VENDORED_PROJ="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/proj.tar.gz"
 
 PKG_CONFIG_PATH="/app/.heroku/vendor/lib/pkgconfig:$PKG_CONFIG_PATH"
 
@@ -27,12 +25,10 @@ if (pip-grep -s requirements.txt GDAL gdal pygdal &> /dev/null) then
   if [ -f ".heroku/vendor/bin/gdalserver" ]; then
     export GDAL=$(pwd)/vendor
   else
-    echo "-----> Noticed GDAL. Bootstrapping gdal, geos, proj."
+    echo "-----> Noticed GDAL. Bootstrapping gdal."
     mkdir -p .heroku/vendor
     # Download and extract cryptography into target vendor directory.
     curl $VENDORED_GDAL -s | tar zxv -C .heroku/vendor &> /dev/null
-    curl $VENDORED_GEOS -s | tar zxv -C .heroku/vendor &> /dev/null
-    curl $VENDORED_PROJ -s | tar zxv -C .heroku/vendor &> /dev/null
 
     export GDAL=$(pwd)/vendor
   fi
diff --git a/bin/steps/geo-libs b/bin/steps/geo-libs
new file mode 100755
index 0000000000000000000000000000000000000000..4a1148f19993f5b0d1b514741952fb68766dff68
--- /dev/null
+++ b/bin/steps/geo-libs
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+
+# This script serves as the GDAL build step of the
+# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python)
+# compiler.
+#
+# A [buildpack](https://devcenter.heroku.com/articles/buildpacks) is an
+# adapter between a Python application and Heroku's runtime.
+#
+# This script is invoked by [`bin/compile`](/).
+
+# The location of the pre-compiled cryptography binary.
+VENDORED_GDAL="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/gdal.tar.gz"
+VENDORED_GEOS="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/geos.tar.gz"
+VENDORED_PROJ="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/proj.tar.gz"
+
+PKG_CONFIG_PATH="/app/.heroku/vendor/lib/pkgconfig:$PKG_CONFIG_PATH"
+
+# Syntax sugar.
+source $BIN_DIR/utils
+
+bpwatch start geo_libs_install
+
+# If GDAL exists within requirements, use vendored gdal.
+if [[ "$BUILD_WITH_GEO_LIBRARIES" ]]; then
+
+  if [ -f ".heroku/vendor/bin/gdalserver" ]; then
+    export GDAL=$(pwd)/vendor
+  else
+    echo "-----> Bootstrapping gdal, geos, proj."
+    mkdir -p .heroku/vendor
+    # Download and extract cryptography into target vendor directory.
+    curl $VENDORED_GDAL -s | tar zxv -C .heroku/vendor &> /dev/null
+    curl $VENDORED_GEOS -s | tar zxv -C .heroku/vendor &> /dev/null
+    curl $VENDORED_PROJ -s | tar zxv -C .heroku/vendor &> /dev/null
+
+    export GDAL=$(pwd)/vendor
+  fi
+fi
+
+bpwatch stop geo_libs_install