diff --git a/snaplet-persistent.cabal b/snaplet-persistent.cabal
--- a/snaplet-persistent.cabal
+++ b/snaplet-persistent.cabal
@@ -1,5 +1,5 @@
 name:           snaplet-persistent
-version:        0.4
+version:        0.4.1
 synopsis:       persistent snaplet for the Snap Framework
 description:    Snaplet support for using the Postgresql database
                 with a Snap Framework application via the persistent
@@ -51,7 +51,7 @@
     persistent-postgresql      >= 1.2     && < 1.4,
     persistent-template        >= 1.2     && < 1.4,
     readable                   >= 0.1     && < 0.3,
-    resource-pool-catchio      >= 0.2     && < 0.3,
+    resource-pool              >= 0.2     && < 0.3,
     resourcet                  >= 0.4     && < 1.2,
     safe                       >= 0.3     && < 0.4,
     snap                       >= 0.13    && < 0.14,
diff --git a/src/Snap/Snaplet/Persistent.hs b/src/Snap/Snaplet/Persistent.hs
--- a/src/Snap/Snaplet/Persistent.hs
+++ b/src/Snap/Snaplet/Persistent.hs
@@ -5,6 +5,7 @@
 
 module Snap.Snaplet.Persistent
   ( initPersist
+  , initPersistGeneric
   , PersistState(..)
   , HasPersistPool(..)
   , mkPgPool
@@ -33,6 +34,7 @@
 import           Data.Configurator
 import           Data.Configurator.Types
 import           Data.Maybe
+import           Data.Pool
 import           Data.Readable
 import           Data.Text                    (Text)
 import qualified Data.Text                    as T
@@ -80,8 +82,29 @@
 -- by the QQ statement in your persistent schema definition in the
 -- call to 'mkMigrate'.
 initPersist :: SqlPersistT (NoLoggingT IO) a -> SnapletInit b PersistState
-initPersist migration = makeSnaplet "persist" description datadir $ do
-    p <- mkSnapletPgPool
+initPersist = initPersistGeneric mkSnapletPgPool
+
+
+-------------------------------------------------------------------------------
+-- | Backend-agnostic initalization with an initial SQL function called right
+-- after the connection pool has been created. This is most useful for
+-- calling migrations upfront right after initialization.
+--
+-- Example:
+--
+-- > initPersist mkPool (runMigrationUnsafe migrateAll)
+--
+-- where migrateAll is the migration function that was auto-generated
+-- by the QQ statement in your persistent schema definition in the
+-- call to 'mkMigrate'.
+--
+-- mkPool is a function to construct a pool of connections to your database
+initPersistGeneric
+    :: Initializer b PersistState (Pool Connection)
+    -> SqlPersistT (NoLoggingT IO) a
+    -> SnapletInit b PersistState
+initPersistGeneric mkPool migration = makeSnaplet "persist" description datadir $ do
+    p <- mkPool
     liftIO . runNoLoggingT $ runSqlPool migration p
     return $ PersistState p
   where
