diff --git a/configure.ac b/configure.ac
index ce138b2b7577029840b50714537c79c119116f88..7d3fe91e16b4a2da705a5858824c7bd7d8dee316 100644
--- a/configure.ac
+++ b/configure.ac
@@ -400,6 +400,18 @@ AC_CHECK_HEADERS([stdlib.h])
 AC_C_CONST
 AC_TYPE_SIZE_T
 
+AC_ARG_ENABLE([mempool],
+ AS_HELP_STRING([--enable-mempool], [Enable memory pool implementation @<:@default=enabled@:>@]),
+ [if   test "x$enableval" = "xyes" ; then
+     use_mempool=yes
+   elif test "x$enableval" = "xno" ; then
+     use_mempool=no
+     AC_DEFINE(DISABLE_MEMPOOL,[1],[Disable mempool (for debugging, mostly)])
+   else
+     AC_MSG_ERROR([--enable-mempool must be used with 'yes' or 'no' argument])
+   fi],
+ [use_mempool=yes])
+
 
 dnl end of libyaml-introduced checks
 dnl *****************************************************************************
@@ -409,7 +421,7 @@ dnl We will support (at some point) OFI, MPI, and SMP
 
 dnl An SMP pool manager is built if neither OFI or MPI are enabled
 AC_ARG_ENABLE([ofi-pool-manager],
- AS_HELP_STRING([--enable-ofi-pool-manager], [Enable OpenFabric based pool manager @<:@default=disabled@:>@]]),[],[enable_ofi_pool_manager=yes])
+ AS_HELP_STRING([--enable-ofi-pool-manager], [Enable OpenFabric based pool manager @<:@default=enabled@:>@]]),[],[enable_ofi_pool_manager=yes])
 AC_ARG_ENABLE([mpi-pool-manager],
  AS_HELP_STRING([--enable-mpi-pool-manager], [Enable MPI based pool manager @<:@default=disabled@:>@]]))
 
diff --git a/maestro/mempool.c b/maestro/mempool.c
index e3706940807d605245ec89359145776a65815045..485bb4d61337baf28a6f2650eaaca42ae7c6e13c 100644
--- a/maestro/mempool.c
+++ b/maestro/mempool.c
@@ -275,6 +275,18 @@ mstro_mempool_destroy(mstro_mempool pool)
   free(pool);  
 }
 
+#ifdef DISABLE_MEMPOOL
+void *
+mstro_mempool_alloc(mstro_mempool pool)
+{
+  assert(pool->num_arenas>0);
+  pool->arenas[0]->num_alloc++;
+  pool->arenas[0]->num_in_flight++;
+  return malloc(pool->object_size);
+}
+
+#else
+
 void *
 mstro_mempool_alloc(mstro_mempool pool)
 {
@@ -323,6 +335,20 @@ mstro_mempool_alloc(mstro_mempool pool)
     }
   }
 }
+#endif
+
+#ifdef DISABLE_MEMPOOL
+
+void
+mstro_mempool_free(mstro_mempool pool, void *obj)
+{
+  assert(pool->num_arenas>0);
+  free(obj);
+  pool->arenas[0]->num_free++;
+  pool->arenas[0]->num_in_flight--;
+}
+
+#else
 
 void 
 mstro_mempool_free(mstro_mempool pool, void *obj)
@@ -378,4 +404,5 @@ mstro_mempool_free(mstro_mempool pool, void *obj)
     arena->num_recycle++;
   }
 }
+#endif