diff --git a/Devel.hs b/Devel.hs
--- a/Devel.hs
+++ b/Devel.hs
@@ -15,6 +15,7 @@
 import qualified Distribution.PackageDescription       as D
 import qualified Distribution.PackageDescription.Parse as D
 import qualified Distribution.Simple.Build             as D
+import qualified Distribution.Simple.Compiler          as D
 import qualified Distribution.Simple.Configure         as D
 import qualified Distribution.Simple.LocalBuildInfo    as D
 import qualified Distribution.Simple.Program           as D
@@ -28,11 +29,10 @@
 import           Control.Concurrent.MVar               (MVar, newEmptyMVar,
                                                         takeMVar, tryPutMVar)
 import qualified Control.Exception                     as Ex
-import           Control.Monad                         (unless, void,
-                                                        when, forever)
-
-import           Control.Monad.Trans.State             (evalStateT, get)
+import           Control.Monad                         (forever, unless, void,
+                                                        when)
 import           Control.Monad.IO.Class                (liftIO)
+import           Control.Monad.Trans.State             (evalStateT, get)
 
 import           Data.Char                             (isNumber, isUpper)
 import qualified Data.List                             as L
@@ -49,22 +49,16 @@
                                                         splitDirectories,
                                                         takeExtension, (</>))
 import           System.FSNotify
-import           System.IO                             (hClose, hGetLine,
-                                                        hIsEOF, hPutStrLn,
-                                                        stderr, stdout)
 import           System.IO.Error                       (isDoesNotExistError)
 import           System.Posix.Types                    (EpochTime)
 import           System.PosixCompat.Files              (getFileStatus,
                                                         modificationTime)
 import           System.Process                        (ProcessHandle,
-                                                        createProcess,
+                                                        createProcess, env,
                                                         getProcessExitCode,
-                                                        proc, rawSystem,
-                                                        readProcess,
-                                                        runInteractiveProcess,
+                                                        proc, readProcess,
                                                         system,
-                                                        terminateProcess,
-                                                        env)
+                                                        terminateProcess)
 import           System.Timeout                        (timeout)
 
 import           Build                                 (getDeps, isNewerThan,
@@ -73,13 +67,14 @@
                                                         getBuildFlags)
 
 import qualified Config                                as GHC
-import           SrcLoc                                (Located)
-import           Network.HTTP.ReverseProxy             (waiProxyTo, ProxyDest (ProxyDest))
 import           Network                               (withSocketsDo)
-import           Network.Wai                           (responseLBS)
+import           Network.HTTP.Conduit                  (def, newManager)
+import           Network.HTTP.ReverseProxy             (ProxyDest (ProxyDest),
+                                                        waiProxyTo)
 import           Network.HTTP.Types                    (status200)
+import           Network.Wai                           (responseLBS)
 import           Network.Wai.Handler.Warp              (run)
-import           Network.HTTP.Conduit                  (newManager, def)
+import           SrcLoc                                (Located)
 
 lockFile :: DevelOpts -> FilePath
 lockFile _opts =  "yesod-devel/devel-terminate"
@@ -109,10 +104,6 @@
 getBuildDir :: DevelOpts -> String
 getBuildDir opts = fromMaybe "dist" (buildDir opts)
 
-cabalCommand :: DevelOpts -> FilePath
-cabalCommand opts | isCabalDev opts = "cabal-dev"
-                  | otherwise       = "cabal"
-
 defaultDevelOpts :: DevelOpts
 defaultDevelOpts = DevelOpts False False False (-1) Nothing Nothing Nothing
 
@@ -156,16 +147,16 @@
 
     -- outer loop re-reads the cabal file
     mainOuterLoop filesModified = do
-      cabal <- liftIO $ D.findPackageDesc "."
-      gpd   <- liftIO $ D.readPackageDescription D.normal cabal
-      ldar <- liftIO lookupLdAr
+      ghcVer <- liftIO ghcVersion
+      cabal  <- liftIO $ D.findPackageDesc "."
+      gpd    <- liftIO $ D.readPackageDescription D.normal cabal
+      ldar   <- liftIO lookupLdAr
       (hsSourceDirs, lib) <- liftIO $ checkCabalFile gpd
       liftIO $ removeFileIfExists (bd </> "setup-config")
-      liftIO $ configure cabal gpd opts
+      liftIO $ configure cabal ghcVer gpd opts
       liftIO $ removeFileIfExists "yesod-devel/ghcargs.txt"  -- these files contain the wrong data after
       liftIO $ removeFileIfExists "yesod-devel/arargs.txt"   -- the configure step, remove them to force
       liftIO $ removeFileIfExists "yesod-devel/ldargs.txt"   -- a cabal build first
-      ghcVer <- liftIO ghcVersion
       rebuild <- liftIO $ mkRebuild gpd ghcVer cabal opts ldar
       mainInnerLoop hsSourceDirs filesModified cabal gpd lib ghcVer rebuild
 
@@ -227,16 +218,14 @@
   cabal-dev uses the command-line tool, we can fall back to
   cabal-dev buildopts if required
 -}
-configure :: FilePath -> D.GenericPackageDescription -> DevelOpts -> IO ()
-configure _cabalFile gpd opts
-  | isCabalDev opts = rawSystem (cabalCommand opts) args >> return ()
-  | otherwise       = do
-                        lbi <- D.configure (gpd, hookedBuildInfo) configFlags
-                        D.writePersistBuildConfig (getBuildDir opts) lbi -- fixme we could keep this in memory instead of file
+configure :: FilePath -> String -> D.GenericPackageDescription -> DevelOpts -> IO ()
+configure _cabalFile ghcVer gpd opts = do
+  lbi <- D.configure (gpd, hookedBuildInfo) configFlags
+  D.writePersistBuildConfig (getBuildDir opts) lbi -- fixme we could keep this in memory instead of file
   where
     hookedBuildInfo = (Nothing, [])
-    configFlags | forceCabal opts = config
-                | otherwise       = config
+    configFlags0 | forceCabal opts = config
+                 | otherwise       = config
                        { DSS.configProgramPaths =
                              [ ("ar",  "yesod-ar-wrapper")
                              , ("ld", "yesod-ld-wrapper")
@@ -244,35 +233,33 @@
                              ]
                        , DSS.configHcPkg = DSS.Flag "ghc-pkg"
                        }
+#if MIN_VERSION_Cabal(1,16,0)
+    configFlags | isCabalDev opts = configFlags0
+                       { DSS.configPackageDBs =
+                          [ Nothing
+                          , Just D.GlobalPackageDB
+                          , Just cabalDevPackageDb
+                          ]
+                       }
+#else
+    configFlags | isCabalDev opts = configFlags0
+                       { DSS.configPackageDB = DSS.Flag cabalDevPackageDb
+                       }
+#endif
+                | otherwise  = configFlags0
 
+    cabalDevPackageDb = D.SpecificPackageDB ("cabal-dev/packages-" ++ ghcVer ++ ".conf")
+
+
     config = (DSS.defaultConfigFlags D.defaultProgramConfiguration)
                { DSS.configConfigurationsFlags =
-                     [ (D.FlagName "devel", True)  -- legaxy
+                     [ (D.FlagName "devel", True)  -- legacy
                      , (D.FlagName "library-only", True)
                      ]
                , DSS.configProfLib     = DSS.Flag False
                , DSS.configUserInstall = DSS.Flag True
                }
-    cabalArgs
-        | isCabalDev opts = map ("--cabal-install-arg=" ++) as
-        | otherwise       = as
-        where
-          as =
-            [ "-fdevel" -- legacy
-            , "-flibrary-only"
-            ] ++ wrapperArgs
-          wrapperArgs
-              | forceCabal opts = []
-              | otherwise       =
-                  [ "--with-compiler=yesod-ghc-wrapper"
-                  , "--with-hc-pkg=ghc-pkg"
-                  , "--with-ld=yesod-ld-wrapper"
-                  , "--with-ar=yesod-ar-wrapper"
-                  ]
-    args :: [String]
-    args = "configure":cabalArgs ++ ["--disable-library-profiling" ]
 
-
 removeFileIfExists :: FilePath -> IO ()
 removeFileIfExists file = removeFile file `Ex.catch` handler
     where
@@ -302,15 +289,7 @@
   buildPackage bf ld ar
 
 rebuildCabal :: D.GenericPackageDescription -> DevelOpts -> IO Bool
-rebuildCabal _gpd opts
-    | isCabalDev opts = do
-       let cmd = cabalCommand opts
-       putStrLn $ "Rebuilding application... (using " ++ cmd ++ ")"
-       exit <- (if verbose opts then rawSystem else rawSystemFilter) cmd ["build"]
-       return $ case exit of
-             ExitSuccess -> True
-             _           -> False
-    | otherwise = do
+rebuildCabal _gpd opts = do
        putStrLn $ "Rebuilding application... (using Cabal library)"
        lbi <- getPersistBuildConfig opts -- fixme we could cache this from the configure step
        let buildFlags | verbose opts = DSS.defaultBuildFlags
@@ -407,11 +386,12 @@
 
 ghcPackageArgs :: DevelOpts -> String -> D.PackageDescription -> D.Library -> IO [String]
 ghcPackageArgs opts ghcVer cabal lib = do
-   lbi <- getPersistBuildConfig opts
-   cbi <- fromMaybeErr errCbi (D.libraryConfig lbi)
-   if isCabalDev opts
-     then return ("-hide-all-packages" : "-no-user-package-conf" : inplaceConf : selfPkgArg lbi : cabalDevConf : depArgs lbi cbi)
-     else return ("-hide-all-packages" : inplaceConf : selfPkgArg lbi : depArgs lbi cbi)
+     lbi <- getPersistBuildConfig opts
+     cbi <- fromMaybeErr errCbi (D.libraryConfig lbi)
+     if isCabalDev opts
+       then return ("-hide-all-packages" : "-no-user-package-conf" : inplaceConf
+                       : selfPkgArg lbi : cabalDevConf : depArgs lbi cbi)
+       else return ("-hide-all-packages" : inplaceConf : selfPkgArg lbi : depArgs lbi cbi)
       where
         selfPkgArg lbi  = pkgArg . D.inplacePackageId . D.package . D.localPkgDescr $ lbi
         pkgArg (D.InstalledPackageId pkgId) = "-package-id" ++ pkgId
@@ -476,23 +456,6 @@
   return $ (,) <$> look D.ldProgram pgmc' <*> look D.arProgram pgmc'
      where
        look pgm pdb = fmap D.programPath (D.lookupProgram pgm pdb)
-
--- | Acts like @rawSystem@, but filters out lines from the output that we're not interested in seeing.
-rawSystemFilter :: String -> [String] -> IO ExitCode
-rawSystemFilter command args = do
-    (inh, outh, errh, ph) <- runInteractiveProcess command args Nothing Nothing
-    hClose inh
-    let go handlein handleout = do
-            isEof <- hIsEOF handlein
-            if isEof
-                then hClose handlein
-                else do
-                    line <- hGetLine handlein
-                    unless ("Loading package " `L.isPrefixOf` line) $ hPutStrLn handleout line
-                    go handlein handleout
-    _ <- forkIO $ go outh stdout
-    _ <- forkIO $ go errh stderr
-    waitForProcess' ph
 
 -- | nonblocking version of @waitForProcess@
 waitForProcess' :: ProcessHandle -> IO ExitCode
diff --git a/Yesod.hs b/Yesod.hs
--- a/Yesod.hs
+++ b/Yesod.hs
@@ -30,6 +30,7 @@
     , julius
     , JavascriptUrl
     , renderJavascriptUrl
+    , toJSON
       -- ** Cassius/Lucius
     , cassius
     , lucius
@@ -55,6 +56,7 @@
 import System.IO (stderr, hPutStrLn)
 import Text.Blaze.Html (toHtml)
 import System.Environment (getEnv)
+import Data.Aeson (toJSON)
 
 showIntegral :: Integral a => a -> String
 showIntegral x = show (fromIntegral x :: Integer)
diff --git a/hsfiles/mongo.hsfiles b/hsfiles/mongo.hsfiles
--- a/hsfiles/mongo.hsfiles
+++ b/hsfiles/mongo.hsfiles
@@ -313,7 +313,7 @@
 -- You can find more information on persistent and how to declare entities
 -- at:
 -- http://www.yesodweb.com/book/persistent/
-share [mkPersist MkPersistSettings { mpsBackend = ConT ''Action }, mkMigrate "migrateAll"]
+share [mkPersist MkPersistSettings { mpsBackend = ConT ''MongoBackend }, mkMigrate "migrateAll"]
     $(persistFileWith lowerCaseSettings "config/models")
 
 {-# START_FILE PROJECTNAME.cabal #-}
@@ -370,8 +370,8 @@
                  , clientsession                 >= 0.8        && < 0.9
                  , bytestring                    >= 0.9        && < 0.11
                  , text                          >= 0.11       && < 0.12
-                 , persistent                    >= 1.0        && < 1.1
-                 , persistent-mongoDB            >= 1.0        && < 1.1
+                 , persistent                    >= 1.1        && < 1.2
+                 , persistent-mongoDB            >= 1.1        && < 1.2
                  , template-haskell
                  , hamlet                        >= 1.1        && < 1.2
                  , shakespeare-css               >= 1.0        && < 1.1
diff --git a/hsfiles/mysql.hsfiles b/hsfiles/mysql.hsfiles
--- a/hsfiles/mysql.hsfiles
+++ b/hsfiles/mysql.hsfiles
@@ -371,8 +371,8 @@
                  , clientsession                 >= 0.8        && < 0.9
                  , bytestring                    >= 0.9        && < 0.11
                  , text                          >= 0.11       && < 0.12
-                 , persistent                    >= 1.0        && < 1.1
-                 , persistent-mysql              >= 1.0        && < 1.1
+                 , persistent                    >= 1.1        && < 1.2
+                 , persistent-mysql              >= 1.1        && < 1.2
                  , template-haskell
                  , hamlet                        >= 1.1        && < 1.2
                  , shakespeare-css               >= 1.0        && < 1.1
diff --git a/hsfiles/postgres.hsfiles b/hsfiles/postgres.hsfiles
--- a/hsfiles/postgres.hsfiles
+++ b/hsfiles/postgres.hsfiles
@@ -371,8 +371,8 @@
                  , clientsession                 >= 0.8        && < 0.9
                  , bytestring                    >= 0.9        && < 0.11
                  , text                          >= 0.11       && < 0.12
-                 , persistent                    >= 1.0        && < 1.1
-                 , persistent-postgresql         >= 1.0        && < 1.1
+                 , persistent                    >= 1.1        && < 1.2
+                 , persistent-postgresql         >= 1.1        && < 1.2
                  , template-haskell
                  , hamlet                        >= 1.1        && < 1.2
                  , shakespeare-css               >= 1.0        && < 1.1
diff --git a/hsfiles/sqlite.hsfiles b/hsfiles/sqlite.hsfiles
--- a/hsfiles/sqlite.hsfiles
+++ b/hsfiles/sqlite.hsfiles
@@ -371,8 +371,8 @@
                  , clientsession                 >= 0.8        && < 0.9
                  , bytestring                    >= 0.9        && < 0.11
                  , text                          >= 0.11       && < 0.12
-                 , persistent                    >= 1.0        && < 1.1
-                 , persistent-sqlite             >= 1.0        && < 1.1
+                 , persistent                    >= 1.1        && < 1.2
+                 , persistent-sqlite             >= 1.1        && < 1.2
                  , template-haskell
                  , hamlet                        >= 1.1        && < 1.2
                  , shakespeare-css               >= 1.0        && < 1.1
diff --git a/yesod.cabal b/yesod.cabal
--- a/yesod.cabal
+++ b/yesod.cabal
@@ -1,5 +1,5 @@
 name:            yesod
-version:         1.1.4.1
+version:         1.1.5
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -43,6 +43,7 @@
                    , warp                      >= 1.3      && < 1.4
                    , blaze-html                >= 0.5      && < 0.6
                    , blaze-markup              >= 0.5.1    && < 0.6
+                   , aeson
 
     exposed-modules: Yesod
     ghc-options:     -Wall
