diff --git a/apiary-mongoDB.cabal b/apiary-mongoDB.cabal
--- a/apiary-mongoDB.cabal
+++ b/apiary-mongoDB.cabal
@@ -1,5 +1,5 @@
 name:                apiary-mongoDB
-version:             1.1.0
+version:             1.1.1
 synopsis:            mongoDB support for apiary web framework.
 -- description:
 license:             MIT
diff --git a/src/Web/Apiary/MongoDB.hs b/src/Web/Apiary/MongoDB.hs
--- a/src/Web/Apiary/MongoDB.hs
+++ b/src/Web/Apiary/MongoDB.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE DataKinds #-}
@@ -24,8 +25,10 @@
 import Control.Monad.Trans.Maybe
 import Control.Monad.IO.Class
 import Control.Monad.Trans.Control
+import Control.Monad.Trans.Reader
 import Control.Exception.Lifted
 import Control.Monad.Apiary.Action
+import Control.Monad.Apiary
 
 import Web.Apiary
 import Web.Apiary.Heroku
@@ -109,12 +112,21 @@
 -- | query using 'MongoDBConfig' settings.
 --
 -- if you want to access other db, other accessmode, please use 'useDb' or 'accessMode'.
-access :: (Has MongoDB exts, MonadBaseControl IO m, MonadIO m)
-       => Action (ActionT exts prms m) a -> ActionT exts prms m a
-access m = do
-    MongoDB mongo conf <- getExt (Proxy :: Proxy MongoDB)
-    withResource mongo $ \p ->
-        MongoDB.access p (mongoDBAccessMode conf) (mongoDBDatabase conf) $
-        maybe (return True) (uncurry auth) (mongoDBAuth conf)
-        >>= flip unless (throwIO $ ConnectionFailure $ userError "auth failed.")
-        >> m
+class MongoAccess m where
+    access :: Action m a -> m a
+
+accessImpl :: (MonadBaseControl IO m, MonadIO m) => Action m a -> MongoDB -> m a
+accessImpl m (MongoDB mongo conf) = withResource mongo $ \p ->
+    MongoDB.access p (mongoDBAccessMode conf) (mongoDBDatabase conf) $
+    maybe (return True) (uncurry auth) (mongoDBAuth conf)
+    >>= flip unless (throwIO $ ConnectionFailure $ userError "auth failed.")
+    >> m
+
+instance (Has MongoDB exts, MonadBaseControl IO m, MonadIO m) => MongoAccess (ActionT exts prms m) where
+    access m = getExt (Proxy :: Proxy MongoDB) >>= accessImpl m
+
+instance (Has MongoDB exts, MonadBaseControl IO m, MonadIO m, Monad actM) => MongoAccess (ApiaryT exts prms actM m) where
+    access m = apiaryExt (Proxy :: Proxy MongoDB) >>= accessImpl m
+
+instance (Has MongoDB exts, MonadBaseControl IO m, MonadIO m) => MongoAccess (ReaderT (Extensions exts) m) where
+    access m = ask >>= accessImpl m . getExtension (Proxy :: Proxy MongoDB)
