diff --git a/Yesod/Core/Class/Handler.hs b/Yesod/Core/Class/Handler.hs
--- a/Yesod/Core/Class/Handler.hs
+++ b/Yesod/Core/Class/Handler.hs
@@ -61,7 +61,9 @@
 GOX(Monoid w, Strict.RWST r w s)
 GO(Strict.StateT s)
 GOX(Monoid w, Strict.WriterT w)
+#if !MIN_VERSION_resourcet(1,1,0)
 GO(ExceptionT)
+#endif
 GO(Pipe l i o u)
 GO(ConduitM i o)
 #undef GO
@@ -85,7 +87,9 @@
 GOX(Monoid w, Strict.RWST r w s)
 GO(Strict.StateT s)
 GOX(Monoid w, Strict.WriterT w)
+#if !MIN_VERSION_resourcet(1,1,0)
 GO(ExceptionT)
+#endif
 GO(Pipe l i o u)
 GO(ConduitM i o)
 #undef GO
diff --git a/Yesod/Core/Content.hs b/Yesod/Core/Content.hs
--- a/Yesod/Core/Content.hs
+++ b/Yesod/Core/Content.hs
@@ -60,7 +60,8 @@
 
 import Text.Hamlet (Html)
 import Text.Blaze.Html.Renderer.Utf8 (renderHtmlBuilder)
-import Data.Conduit (Source, ResourceT, Flush (Chunk), ResumableSource, mapOutput)
+import Data.Conduit (Source, Flush (Chunk), ResumableSource, mapOutput)
+import Control.Monad.Trans.Resource (ResourceT)
 import Data.Conduit.Internal (ResumableSource (ResumableSource))
 
 import qualified Data.Aeson as J
diff --git a/Yesod/Core/Internal/Request.hs b/Yesod/Core/Internal/Request.hs
--- a/Yesod/Core/Internal/Request.hs
+++ b/Yesod/Core/Internal/Request.hs
@@ -40,6 +40,7 @@
 import Data.Conduit.Binary (sourceFile, sinkFile)
 import Data.Word (Word64)
 import Control.Monad.IO.Class (liftIO)
+import Control.Monad.Trans.Resource (runResourceT, ResourceT)
 import Control.Exception (throwIO)
 import Yesod.Core.Types
 import qualified Data.Map as Map
diff --git a/Yesod/Core/Json.hs b/Yesod/Core/Json.hs
--- a/Yesod/Core/Json.hs
+++ b/Yesod/Core/Json.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE TypeSynonymInstances, OverloadedStrings #-}
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Yesod.Core.Json
     ( -- * Convert from a JSON value
@@ -28,6 +29,7 @@
 
 import Yesod.Core.Handler (HandlerT, getRequest, invalidArgs, redirect, selectRep, provideRep, rawRequestBody, ProvidedRep)
 import Control.Monad.Trans.Writer (Writer)
+import Control.Monad.Trans.Resource (runExceptionT)
 import Data.Monoid (Endo)
 import Yesod.Core.Content (TypedContent)
 import Yesod.Core.Types (reqAccept)
@@ -42,6 +44,7 @@
 import Data.Text (pack)
 import qualified Data.Vector as V
 import Data.Conduit
+import Data.Conduit.Lift
 import qualified Data.ByteString.Char8 as B8
 import Data.Maybe (listToMaybe)
 import Control.Monad (liftM)
@@ -92,7 +95,11 @@
 -- /Since: 0.3.0/
 parseJsonBody :: (MonadHandler m, J.FromJSON a) => m (J.Result a)
 parseJsonBody = do
+#if MIN_VERSION_resourcet(1,1,0)
+    eValue <- rawRequestBody $$ runCatchC (sinkParser JP.value')
+#else
     eValue <- runExceptionT $ rawRequestBody $$ sinkParser JP.value'
+#endif
     return $ case eValue of
         Left e -> J.Error $ show e
         Right value -> J.fromJSON value
diff --git a/Yesod/Core/Types.hs b/Yesod/Core/Types.hs
--- a/Yesod/Core/Types.hs
+++ b/Yesod/Core/Types.hs
@@ -20,12 +20,13 @@
 import           Control.Monad.Logger               (LogLevel, LogSource,
                                                      MonadLogger (..))
 import           Control.Monad.Trans.Control        (MonadBaseControl (..))
-import           Control.Monad.Trans.Resource       (MonadResource (..), InternalState, runInternalState)
+import           Control.Monad.Trans.Resource       (MonadResource (..), InternalState, runInternalState, MonadThrow (..), monadThrow, ResourceT)
+#if !MIN_VERSION_resourcet(1,1,0)
+import           Control.Monad.Trans.Resource       (MonadUnsafeIO (..))
+#endif
 import           Data.ByteString                    (ByteString)
 import qualified Data.ByteString.Lazy               as L
-import           Data.Conduit                       (Flush, MonadThrow (..),
-                                                     MonadUnsafeIO (..),
-                                                     ResourceT, Source)
+import           Data.Conduit                       (Flush, Source)
 import           Data.Dynamic                       (Dynamic)
 import           Data.IORef                         (IORef)
 import           Data.Map                           (Map, unionWith)
@@ -394,8 +395,17 @@
 instance MonadTrans (WidgetT site) where
     lift = WidgetT . const . liftM (, mempty)
 instance MonadThrow m => MonadThrow (WidgetT site m) where
+#if MIN_VERSION_resourcet(1,1,0)
+    throwM = lift . throwM
+#else
     monadThrow = lift . monadThrow
+#endif
+
+#if MIN_VERSION_resourcet(1,1,0)
+instance (Applicative m, MonadIO m, MonadBase IO m, MonadThrow m) => MonadResource (WidgetT site m) where
+#else
 instance (Applicative m, MonadIO m, MonadUnsafeIO m, MonadThrow m) => MonadResource (WidgetT site m) where
+#endif
     liftResourceT f = WidgetT $ \hd -> liftIO $ fmap (, mempty) $ runInternalState f (handlerResource hd)
 
 instance MonadIO m => MonadLogger (WidgetT site m) where
@@ -434,8 +444,17 @@
     restoreM (StH base) = HandlerT $ const $ restoreM base
 
 instance MonadThrow m => MonadThrow (HandlerT site m) where
+#if MIN_VERSION_resourcet(1,1,0)
+    throwM = lift . monadThrow
+#else
     monadThrow = lift . monadThrow
+#endif
+
+#if MIN_VERSION_resourcet(1,1,0)
+instance (MonadIO m, MonadBase IO m, MonadThrow m) => MonadResource (HandlerT site m) where
+#else
 instance (MonadIO m, MonadUnsafeIO m, MonadThrow m) => MonadResource (HandlerT site m) where
+#endif
     liftResourceT f = HandlerT $ \hd -> liftIO $ runInternalState f (handlerResource hd)
 
 instance MonadIO m => MonadLogger (HandlerT site m) where
diff --git a/test/YesodCoreTest/RawResponse.hs b/test/YesodCoreTest/RawResponse.hs
--- a/test/YesodCoreTest/RawResponse.hs
+++ b/test/YesodCoreTest/RawResponse.hs
@@ -19,6 +19,7 @@
 import Control.Concurrent.Async (withAsync)
 import Control.Monad.Trans.Resource (register)
 import Data.IORef
+import Data.Streaming.Network (bindPortTCP)
 
 data App = App
 
@@ -42,7 +43,7 @@
     loop 43124
   where
     loop port = do
-        esocket <- try $ bindPort port "*"
+        esocket <- try $ bindPortTCP port "*"
         case esocket of
             Left (_ :: IOException) -> loop (succ port)
             Right socket -> do
diff --git a/yesod-core.cabal b/yesod-core.cabal
--- a/yesod-core.cabal
+++ b/yesod-core.cabal
@@ -1,5 +1,5 @@
 name:            yesod-core
-version:         1.2.9.1
+version:         1.2.9.2
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -32,11 +32,11 @@
                    , text                  >= 0.7
                    , template-haskell
                    , path-pieces           >= 0.1.2    && < 0.2
-                   , hamlet                >= 1.1      && < 1.2
-                   , shakespeare           >= 1.0      && < 1.3
-                   , shakespeare-js        >= 1.0.2    && < 1.3
-                   , shakespeare-css       >= 1.0      && < 1.1
-                   , shakespeare-i18n      >= 1.0      && < 1.1
+                   , hamlet                >= 1.1
+                   , shakespeare           >= 1.0      && < 2.1
+                   , shakespeare-js        >= 1.0.2
+                   , shakespeare-css       >= 1.0
+                   , shakespeare-i18n      >= 1.0
                    , blaze-builder         >= 0.2.1.4  && < 0.4
                    , transformers          >= 0.2.2    && < 0.4
                    , clientsession         >= 0.9      && < 0.10
@@ -57,7 +57,7 @@
                    , wai-logger            >= 0.2
                    , monad-logger          >= 0.3.1    && < 0.4
                    , conduit               >= 0.5
-                   , resourcet             >= 0.4.9    && < 0.5
+                   , resourcet             >= 0.4.9    && < 1.2
                    , lifted-base           >= 0.1.2
                    , attoparsec-conduit
                    , blaze-html            >= 0.5
@@ -66,6 +66,7 @@
                    , safe
                    , warp                  >= 1.3.8
                    , unix-compat
+                   , conduit-extra
 
     exposed-modules: Yesod.Core
                      Yesod.Core.Content
@@ -124,6 +125,9 @@
                   , network-conduit
                   , network
                   , async
+                  , conduit-extra
+                  , shakespeare
+                  , streaming-commons
     ghc-options:     -Wall
     extensions: TemplateHaskell
 
