diff --git a/snaplet-mongodb-minimalistic.cabal b/snaplet-mongodb-minimalistic.cabal
--- a/snaplet-mongodb-minimalistic.cabal
+++ b/snaplet-mongodb-minimalistic.cabal
@@ -1,5 +1,5 @@
 Name:               snaplet-mongodb-minimalistic
-Version:            0.0.6.5
+Version:            0.0.6.6
 Synopsis:           Minimalistic MongoDB Snaplet.
 Description:        Minimalistic MongoDB Snaplet.
 License:            BSD3
@@ -33,8 +33,9 @@
 
   Build-depends:
     base                        == 4.*,
+    lens                        == 3.7.*,
     mtl                         == 2.*,
-    snap                        == 0.9.*,
+    snap                        == 0.10.*,
     snap-core                   == 0.9.*,
     text                        == 0.11.*,
     mongoDB                     == 1.3.*
diff --git a/src/Snap/Snaplet/MongoDB/Functions/M.hs b/src/Snap/Snaplet/MongoDB/Functions/M.hs
--- a/src/Snap/Snaplet/MongoDB/Functions/M.hs
+++ b/src/Snap/Snaplet/MongoDB/Functions/M.hs
@@ -14,18 +14,18 @@
 , unsafeWithDB'
 ) where 
 
+import           Control.Monad (liftM)
 import           Control.Monad.Error (runErrorT)
+import           Control.Lens (cloneLens, use)
 
 import           Snap (MonadIO, MonadState, gets, liftIO) -- transformers, mtl
-import           Snap (Lens, getL) -- data-lens
+import           Snap (SnapletLens)
 import           Snap (Snaplet, snapletValue)
 import           Snap.Snaplet.MongoDB.Core
 
 import           Database.MongoDB (Action, AccessMode, Failure (ConnectionFailure), access)
 import           System.IO.Pool (aResource)
 
-import qualified Control.Category as C ((.))
-
 ------------------------------------------------------------------------------
 -- | Database access function.
 --
@@ -33,9 +33,9 @@
 --
 -- > unsafeWithDB accountDB $ insert "test-collection" [ "some_field" = "something" ]
 unsafeWithDB :: (MonadIO m, MonadState app m)
-             => Lens app (Snaplet MongoDB) -- ^ The snaplet (database) on which you want the action to be run.
-             -> Action IO a                -- ^ 'Action' you want to perform.
-             -> m a                        -- ^ The action's result; in case of failure 'error' is called.
+             => SnapletLens app MongoDB -- ^ The snaplet (database) on which you want the action to be run.
+             -> Action IO a             -- ^ 'Action' you want to perform.
+             -> m a                     -- ^ The action's result; in case of failure 'error' is called.
 unsafeWithDB snaplet action = getMongoAccessMode snaplet >>= flip (unsafeWithDB' snaplet) action
 
 ------------------------------------------------------------------------------
@@ -45,12 +45,12 @@
 --
 -- > unsafeWithDB' accountDB UnconfirmedWrites $ insert "test-collection" [ "some_field" = "something" ]
 unsafeWithDB' :: (MonadIO m, MonadState app m)
-              => Lens app (Snaplet MongoDB) -- ^ The snaplet (database) on which you want the action to be run.
-              -> AccessMode                 -- ^ Access mode you want to use when performing the action.
-              -> Action IO a                -- ^ 'Action' you want to perform.
-              -> m a                        -- ^ The action's result; in case of failure 'error' is called.
+              => SnapletLens app MongoDB -- ^ The snaplet (database) on which you want the action to be run.
+              -> AccessMode              -- ^ Access mode you want to use when performing the action.
+              -> Action IO a             -- ^ 'Action' you want to perform.
+              -> m a                     -- ^ The action's result; in case of failure 'error' is called.
 unsafeWithDB' snaplet mode action = do
-    res <- (eitherWithDB' snaplet mode action)
+    res <- eitherWithDB' snaplet mode action
     either (error . show) return res
 
 ------------------------------------------------------------------------------
@@ -60,9 +60,9 @@
 --
 -- > maybeWithDB accountDB $ insert "test-collection" [ "some_field" = "something" ]
 maybeWithDB :: (MonadIO m, MonadState app m)
-            => Lens app (Snaplet MongoDB) -- ^ The snaplet (database) on which you want the action to be run.
-            -> Action IO a                -- ^ 'Action' you want to perform.
-            -> m (Maybe a)                -- ^ 'Nothing' in case of failure or 'Just' the result of the action.
+            => SnapletLens app MongoDB -- ^ The snaplet (database) on which you want the action to be run.
+            -> Action IO a             -- ^ 'Action' you want to perform.
+            -> m (Maybe a)             -- ^ 'Nothing' in case of failure or 'Just' the result of the action.
 maybeWithDB snaplet action = getMongoAccessMode snaplet >>= flip (maybeWithDB' snaplet) action
 
 ------------------------------------------------------------------------------
@@ -72,12 +72,12 @@
 --
 -- > maybeWithDB' accountDB UnconfirmedWrites $ insert "test-collection" [ "some_field" = "something" ]
 maybeWithDB' :: (MonadIO m, MonadState app m)
-             => Lens app (Snaplet MongoDB) -- ^ The snaplet (database) on which you want the action to be run.
-             -> AccessMode                 -- ^ Access mode you want to use when performing the action.
-             -> Action IO a                -- ^ 'Action' you want to perform.
-             -> m (Maybe a)                -- ^ 'Nothing' in case of failure or 'Just' the result of the action.
+             => SnapletLens app MongoDB -- ^ The snaplet (database) on which you want the action to be run.
+             -> AccessMode              -- ^ Access mode you want to use when performing the action.
+             -> Action IO a             -- ^ 'Action' you want to perform.
+             -> m (Maybe a)             -- ^ 'Nothing' in case of failure or 'Just' the result of the action.
 maybeWithDB' snaplet mode action = do
-    res <- (eitherWithDB' snaplet mode action)
+    res <- eitherWithDB' snaplet mode action
     return $ either (const Nothing) Just res
 
 ------------------------------------------------------------------------------
@@ -87,9 +87,9 @@
 --
 -- > eitherWithDB accountDB $ insert "test-collection" [ "some_field" = "something" ]
 eitherWithDB :: (MonadIO m, MonadState app m)
-             => Lens app (Snaplet MongoDB) -- ^ The snaplet (database) on which you want the action to be run.
-             -> Action IO a                -- ^ 'Action' you want to perform.
-             -> m (Either Failure a)       -- ^ 'Either' 'Failure' or the action's result.
+             => SnapletLens app MongoDB -- ^ The snaplet (database) on which you want the action to be run.
+             -> Action IO a             -- ^ 'Action' you want to perform.
+             -> m (Either Failure a)    -- ^ 'Either' 'Failure' or the action's result.
 eitherWithDB snaplet action = getMongoAccessMode snaplet >>= flip (eitherWithDB' snaplet) action
 
 ------------------------------------------------------------------------------
@@ -99,19 +99,17 @@
 --
 -- > eitherWithDB' accountDB UnconfirmedWrites $ insert "test-collection" [ "some_field" = "something" ]
 eitherWithDB' :: (MonadIO m, MonadState app m)
-              => Lens app (Snaplet MongoDB) -- ^ The snaplet (database) on which you want the action to be run.
-              -> AccessMode                 -- ^ Access mode you want to use when performing the action.
-              -> Action IO a                -- ^ 'Action' you want to perform.
-              -> m (Either Failure a)       -- ^ 'Either' 'Failure' or the action's result.
+              => SnapletLens app MongoDB -- ^ The snaplet (database) on which you want the action to be run.
+              -> AccessMode              -- ^ Access mode you want to use when performing the action.
+              -> Action IO a             -- ^ 'Action' you want to perform.
+              -> m (Either Failure a)    -- ^ 'Either' 'Failure' or the action's result.
 eitherWithDB' snaplet mode action = do
-    (MongoDB pool database _) <- gets (getL ((C..) snapletValue snaplet))
+    (MongoDB pool database _) <- use (cloneLens snaplet . snapletValue)
     ep <- liftIO $ runErrorT $ aResource pool
     case ep of
          Left  err -> return $ Left $ ConnectionFailure err
          Right pip -> liftIO $ access pip mode database action
 
-getMongoAccessMode :: (MonadIO m, MonadState app m) => Lens app (Snaplet MongoDB) -> m AccessMode
-getMongoAccessMode snaplet = gets (getL ((C..) snapletValue snaplet)) >>= return . mongoAccessMode
+getMongoAccessMode :: (MonadIO m, MonadState app m) => SnapletLens app MongoDB -> m AccessMode
+getMongoAccessMode snaplet = mongoAccessMode `liftM` use (cloneLens snaplet . snapletValue)
 {-# INLINE getMongoAccessMode #-}
-
-
diff --git a/src/Snap/Snaplet/MongoDB/Functions/S.hs b/src/Snap/Snaplet/MongoDB/Functions/S.hs
--- a/src/Snap/Snaplet/MongoDB/Functions/S.hs
+++ b/src/Snap/Snaplet/MongoDB/Functions/S.hs
@@ -17,7 +17,6 @@
 import           Control.Monad.Error (runErrorT)
 
 import           Snap (MonadIO, MonadState, gets, liftIO) -- transformers, mtl
-import           Snap (Lens, getL) -- data-lens
 import           Snap (Snaplet, snapletValue)
 import           Snap.Snaplet.MongoDB.Core
 
