diff --git a/src/Yam/DataSource.hs b/src/Yam/DataSource.hs
--- a/src/Yam/DataSource.hs
+++ b/src/Yam/DataSource.hs
@@ -14,7 +14,6 @@
   , selectValue
   ) where
 
-import           Control.Exception       (bracket)
 import           Control.Monad.IO.Unlift
 import           Data.Acquire            (withAcquire)
 import           Data.Conduit
@@ -24,7 +23,7 @@
 import           System.IO.Unsafe        (unsafePerformIO)
 import           Yam                     hiding (LogFunc)
 
-type DataSource = ConnectionPool
+type DataSource = Pool SqlBackend
 
 {-# NOINLINE dataSourceKey #-}
 dataSourceKey :: Key DataSource
@@ -62,18 +61,17 @@
   logger <- askLoggerIO
   withRunInIO $ \run -> withResource pool $ run . \c -> runSqlConn db c { connLogFunc = logger }
 
-{-# INLINE runInDB #-}
-runInDB :: LogFunc -> DataSourceProvider -> (DataSource -> IO a) -> IO a
-runInDB logfunc DataSourceProvider{..} action =
-  bracket (runLoggingT datasource logfunc) destroyAllResources $ \ds -> do
-    runLoggingT (runDB ds migration) logfunc
-    action ds
-
 datasourceMiddleware :: Key DataSource -> DataSourceProvider -> AppMiddleware
-datasourceMiddleware k dsp = AppMiddleware $ \env f -> do
-  lf <- askLoggerIO
-  logInfo $ "Datasource " <> dbtype dsp <> " Initialized..."
-  liftIO  $ runInDB lf dsp $ \ds -> runLoggingT (f (setAttr k ds env, id)) lf
+datasourceMiddleware k DataSourceProvider{..} = simplePoolMiddleware (True, "database " <> dbtype) k open (liftIO . destroyAllResources)
+  where
+    {-# INLINE trans #-}
+    trans :: LoggingT IO a -> App a
+    trans a = askLoggerIO >>= liftIO . runLoggingT a
+    {-# INLINE open #-}
+    open = do
+      a <- trans datasource
+      trans $ runDB a migration
+      return a
 
 primaryDatasourceMiddleware = datasourceMiddleware dataSourceKey
 
diff --git a/yam-datasource.cabal b/yam-datasource.cabal
--- a/yam-datasource.cabal
+++ b/yam-datasource.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.12
 name: yam-datasource
-version: 0.5.11
+version: 0.5.12
 license: BSD3
 license-file: LICENSE
 copyright: (c) Daniel YU
@@ -36,8 +36,8 @@
     build-depends:
         base >=4.9 && <5,
         conduit >=1.3.1 && <1.4,
-        persistent >=2.9.0 && <2.10,
+        persistent >=2.9.1 && <2.10,
         resource-pool >=0.2.3.2 && <0.3,
         resourcet >=1.2.2 && <1.3,
         unliftio-core >=0.1.2.0 && <0.2,
-        yam >=0.5.11 && <0.6
+        yam >=0.5.12 && <0.6
