diff --git a/Yesod/Persist.hs b/Yesod/Persist.hs
--- a/Yesod/Persist.hs
+++ b/Yesod/Persist.hs
@@ -11,22 +11,24 @@
 
 import Database.Persist
 import Database.Persist.TH
-import Control.Monad.Trans.Class (MonadTrans (..))
-import Control.Monad.IO.Class (MonadIO)
-import Control.Failure (Failure)
+import Control.Monad.Trans.Class (MonadTrans)
 
 import Yesod.Handler
 
-type YesodDB sub master = YesodPersistBackend master (GGHandler sub master IO)
+type YesodDB sub master = YesodPersistBackend master (GHandler sub master)
 
 class YesodPersist master where
     type YesodPersistBackend master :: (* -> *) -> * -> *
-    runDB :: MonadIO monad => YesodDB sub master a -> GGHandler sub master monad a
+    runDB :: YesodDB sub master a -> GHandler sub master a
 
 -- | Get the given entity by ID, or return a 404 not found if it doesn't exist.
-get404 :: (PersistBackend t m, PersistEntity val, Monad (t m),
-           Failure ErrorResponse m, MonadTrans t)
-       => Key t val -> t m val
+get404 :: ( PersistStore b m
+          , PersistEntity val
+          , Monad (b m)
+          , m ~ GHandler sub master
+          , MonadTrans b
+          )
+       => Key b val -> b m val
 get404 key = do
     mres <- get key
     case mres of
@@ -35,9 +37,14 @@
 
 -- | Get the given entity by unique key, or return a 404 not found if it doesn't
 --   exist.
-getBy404 :: (PersistBackend t m, PersistEntity val, Monad (t m),
-             Failure ErrorResponse m, MonadTrans t)
-         => Unique val t -> t m (Key t val, val)
+getBy404 :: ( PersistUnique b m
+            , PersistEntity val
+            , m ~ GHandler sub master
+            , Monad (b m)
+            , MonadTrans b
+            , PersistEntityBackend val ~ b
+            )
+         => Unique val b -> b m (Entity val)
 getBy404 key = do
     mres <- getBy key
     case mres of
diff --git a/yesod-persistent.cabal b/yesod-persistent.cabal
--- a/yesod-persistent.cabal
+++ b/yesod-persistent.cabal
@@ -1,5 +1,5 @@
 name:            yesod-persistent
-version:         0.2.2
+version:         0.3.1
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -14,14 +14,13 @@
 
 library
     build-depends:   base                      >= 4        && < 5
-                   , yesod-core                >= 0.8      && < 0.10
-                   , persistent                >= 0.6      && < 0.7
-                   , persistent-template       >= 0.6      && < 0.7
-                   , failure                   >= 0.1      && < 0.2
+                   , yesod-core                >= 0.10.1   && < 0.11
+                   , persistent                >= 0.8      && < 0.9
+                   , persistent-template       >= 0.8      && < 0.9
                    , transformers              >= 0.2.2    && < 0.3
     exposed-modules: Yesod.Persist
     ghc-options:     -Wall
 
 source-repository head
   type:     git
-  location: git://github.com/snoyberg/yesod-persistent.git
+  location: https://github.com/yesodweb/yesod
