diff --git a/simple.cabal b/simple.cabal
--- a/simple.cabal
+++ b/simple.cabal
@@ -1,5 +1,5 @@
 name:                simple
-version:             0.11.3
+version:             1.0.0
 synopsis: A minimalist web framework for the WAI server interface
 description:
 
@@ -52,10 +52,12 @@
     , filepath
     , process
     , setenv
-    , simple-templates >= 0.7.0
+    , simple-templates >= 1.0.0
     , text
     , unordered-containers
     , vector
+  other-modules:
+    Paths_simple
 
 library
   hs-source-dirs: src
@@ -122,6 +124,9 @@
     , transformers-base
     , unordered-containers
     , vector
+  other-modules:
+    Web.Simple.Controller.Trans,
+    Web.Simple.Responses
 
 source-repository head
   type: git
diff --git a/src/Web/Frank.hs b/src/Web/Frank.hs
--- a/src/Web/Frank.hs
+++ b/src/Web/Frank.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE Safe #-}
 {- |
 Frank is a Sinatra-inspired DSL (see <http://www.sinatrarb.com>) for creating
 routes. It is composable with all 'ToApplication' types, but is designed to be used
diff --git a/src/Web/REST.hs b/src/Web/REST.hs
--- a/src/Web/REST.hs
+++ b/src/Web/REST.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE Trustworthy, FlexibleInstances, OverloadedStrings #-}
+{-# LANGUAGE Safe, FlexibleInstances, OverloadedStrings #-}
 {- |
 
 REST is a DSL for creating routes using RESTful HTTP verbs.
diff --git a/src/Web/Simple/Controller.hs b/src/Web/Simple/Controller.hs
--- a/src/Web/Simple/Controller.hs
+++ b/src/Web/Simple/Controller.hs
@@ -52,7 +52,6 @@
 import qualified Data.ByteString.Char8 as S8
 import qualified Data.ByteString.Lazy as L
 import qualified Data.ByteString.Lazy.Char8 as L8
-import           Data.Monoid
 import           Data.Text (Text)
 import           Network.HTTP.Types
 import           Network.Wai
@@ -213,7 +212,7 @@
 -- | Reads and returns the body of the HTTP request.
 body :: Controller s L8.ByteString
 body = do
-  bodyProducer <- requestBody `fmap` request
+  bodyProducer <- getRequestBodyChunk `fmap` request
   liftIO $ do
     result <- consume mempty bodyProducer
     return $ toLazyByteString result
diff --git a/src/Web/Simple/Controller/Trans.hs b/src/Web/Simple/Controller/Trans.hs
--- a/src/Web/Simple/Controller/Trans.hs
+++ b/src/Web/Simple/Controller/Trans.hs
@@ -95,6 +95,9 @@
 instance MonadIO m => MonadIO (ControllerT s m) where
   liftIO = lift . liftIO
 
+instance Monad m => MonadFail (ControllerT s m) where
+  fail = err
+
 instance (Applicative m, Monad m, MonadBase m m) => MonadBase m (ControllerT s m) where
   liftBase = liftBaseDefault
 
diff --git a/src/smpl.hs b/src/smpl.hs
--- a/src/smpl.hs
+++ b/src/smpl.hs
@@ -4,13 +4,11 @@
 module Main (main) where
 
 import Prelude hiding (writeFile, FilePath, all)
-import Control.Applicative
 import Control.Monad (when)
 import Data.Aeson
 import Data.Char
 import qualified Data.ByteString.Char8 as S8
 import qualified Data.Text.Encoding as T
-import Data.Monoid (mempty)
 import Data.Version
 import System.Console.CmdArgs
 import System.Directory
