diff --git a/hsfiles/mongo.hsfiles b/hsfiles/mongo.hsfiles
--- a/hsfiles/mongo.hsfiles
+++ b/hsfiles/mongo.hsfiles
@@ -1,5 +1,12 @@
+{-# START_FILE .dir-locals.el #-}
+((haskell-mode . ((haskell-indent-spaces . 4)
+                  (haskell-process-use-ghci . t)))
+ (hamlet-mode . ((hamlet/basic-offset . 4)
+                 (haskell-process-use-ghci . t))))
+
 {-# START_FILE .ghci #-}
 :set -i.:config:dist/build/autogen
+:set -DDEVELOPMENT
 :set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable
 
 {-# START_FILE .gitignore #-}
@@ -351,6 +358,7 @@
 import Database.Persist.MongoDB hiding (master)
 import Language.Haskell.TH.Syntax
 import Data.Typeable (Typeable)
+import Prelude
 
 -- You can define all of your database entities in the entities file.
 -- You can find more information on persistent and how to declare entities
@@ -593,6 +601,67 @@
 
 combineScripts :: Name -> [Route Static] -> Q Exp
 combineScripts = combineScripts' development combineSettings
+
+{-# START_FILE app/DevelMain.hs #-}
+-- | Development version to be run inside GHCi.
+--
+-- start this up with:
+--
+-- cabal repl --ghc-options="-O0 -fobject-code"
+--
+-- You will need to add these packages to your .cabal file
+-- * foreign-store (very light-weight)
+-- * warp (you already depend on this, it just isn't in your .cabal file)
+--
+-- If you don't use cabal repl, you will need
+-- to run the following in GHCi or to add it to
+-- your .ghci file.
+--
+-- :set -DDEVELOPMENT
+--
+-- There is more information about this approach,
+-- on the wiki: https://github.com/yesodweb/yesod/wiki/ghci
+
+module DevelMain where
+
+import Application (getApplicationDev)
+
+import Control.Exception (finally)
+import Control.Concurrent
+import Data.IORef
+import Foreign.Store
+import Network.Wai.Handler.Warp
+
+-- | Start or restart the server.
+update :: IO ()
+update = do
+    mtidStore <- lookupStore tid_1
+    case mtidStore of
+      Nothing -> do
+          done <- newEmptyMVar
+          _done_0 <- newStore done
+          tid <- start done
+          tidRef <- newIORef tid
+          _tid_1 <- newStore tidRef
+          return ()
+      Just tidStore -> do
+          tidRef <- readStore tidStore
+          tid <- readIORef tidRef
+          done <- readStore (Store done_0)
+          killThread tid
+          takeMVar done
+          newTid <- start done
+          writeIORef tidRef newTid
+  where tid_1 = 1
+        done_0 = 0
+
+-- | Start the server in a separate thread.
+start :: MVar () -- ^ Written to when the thread is killed.
+      -> IO ThreadId
+start done = do
+    (port,app) <- getApplicationDev
+    forkIO (finally (runSettings (setPort port defaultSettings) app)
+                    (putMVar done ()))
 
 {-# START_FILE app/main.hs #-}
 import Prelude              (IO)
diff --git a/hsfiles/mysql.hsfiles b/hsfiles/mysql.hsfiles
--- a/hsfiles/mysql.hsfiles
+++ b/hsfiles/mysql.hsfiles
@@ -1,5 +1,12 @@
+{-# START_FILE .dir-locals.el #-}
+((haskell-mode . ((haskell-indent-spaces . 4)
+                  (haskell-process-use-ghci . t)))
+ (hamlet-mode . ((hamlet/basic-offset . 4)
+                 (haskell-process-use-ghci . t))))
+
 {-# START_FILE .ghci #-}
 :set -i.:config:dist/build/autogen
+:set -DDEVELOPMENT
 :set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable
 
 {-# START_FILE .gitignore #-}
@@ -597,6 +604,67 @@
 
 combineScripts :: Name -> [Route Static] -> Q Exp
 combineScripts = combineScripts' development combineSettings
+
+{-# START_FILE app/DevelMain.hs #-}
+-- | Development version to be run inside GHCi.
+--
+-- start this up with:
+--
+-- cabal repl --ghc-options="-O0 -fobject-code"
+--
+-- You will need to add these packages to your .cabal file
+-- * foreign-store (very light-weight)
+-- * warp (you already depend on this, it just isn't in your .cabal file)
+--
+-- If you don't use cabal repl, you will need
+-- to run the following in GHCi or to add it to
+-- your .ghci file.
+--
+-- :set -DDEVELOPMENT
+--
+-- There is more information about this approach,
+-- on the wiki: https://github.com/yesodweb/yesod/wiki/ghci
+
+module DevelMain where
+
+import Application (getApplicationDev)
+
+import Control.Exception (finally)
+import Control.Concurrent
+import Data.IORef
+import Foreign.Store
+import Network.Wai.Handler.Warp
+
+-- | Start or restart the server.
+update :: IO ()
+update = do
+    mtidStore <- lookupStore tid_1
+    case mtidStore of
+      Nothing -> do
+          done <- newEmptyMVar
+          _done_0 <- newStore done
+          tid <- start done
+          tidRef <- newIORef tid
+          _tid_1 <- newStore tidRef
+          return ()
+      Just tidStore -> do
+          tidRef <- readStore tidStore
+          tid <- readIORef tidRef
+          done <- readStore (Store done_0)
+          killThread tid
+          takeMVar done
+          newTid <- start done
+          writeIORef tidRef newTid
+  where tid_1 = 1
+        done_0 = 0
+
+-- | Start the server in a separate thread.
+start :: MVar () -- ^ Written to when the thread is killed.
+      -> IO ThreadId
+start done = do
+    (port,app) <- getApplicationDev
+    forkIO (finally (runSettings (setPort port defaultSettings) app)
+                    (putMVar done ()))
 
 {-# START_FILE app/main.hs #-}
 import Prelude              (IO)
diff --git a/hsfiles/postgres-fay.hsfiles b/hsfiles/postgres-fay.hsfiles
--- a/hsfiles/postgres-fay.hsfiles
+++ b/hsfiles/postgres-fay.hsfiles
@@ -1,5 +1,12 @@
+{-# START_FILE .dir-locals.el #-}
+((haskell-mode . ((haskell-indent-spaces . 4)
+                  (haskell-process-use-ghci . t)))
+ (hamlet-mode . ((hamlet/basic-offset . 4)
+                 (haskell-process-use-ghci . t))))
+
 {-# START_FILE .ghci #-}
 :set -i.:config:dist/build/autogen
+:set -DDEVELOPMENT
 :set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable
 
 {-# START_FILE .gitignore #-}
@@ -646,6 +653,67 @@
 
 combineScripts :: Name -> [Route Static] -> Q Exp
 combineScripts = combineScripts' development combineSettings
+
+{-# START_FILE app/DevelMain.hs #-}
+-- | Development version to be run inside GHCi.
+--
+-- start this up with:
+--
+-- cabal repl --ghc-options="-O0 -fobject-code"
+--
+-- You will need to add these packages to your .cabal file
+-- * foreign-store (very light-weight)
+-- * warp (you already depend on this, it just isn't in your .cabal file)
+--
+-- If you don't use cabal repl, you will need
+-- to run the following in GHCi or to add it to
+-- your .ghci file.
+--
+-- :set -DDEVELOPMENT
+--
+-- There is more information about this approach,
+-- on the wiki: https://github.com/yesodweb/yesod/wiki/ghci
+
+module DevelMain where
+
+import Application (getApplicationDev)
+
+import Control.Exception (finally)
+import Control.Concurrent
+import Data.IORef
+import Foreign.Store
+import Network.Wai.Handler.Warp
+
+-- | Start or restart the server.
+update :: IO ()
+update = do
+    mtidStore <- lookupStore tid_1
+    case mtidStore of
+      Nothing -> do
+          done <- newEmptyMVar
+          _done_0 <- newStore done
+          tid <- start done
+          tidRef <- newIORef tid
+          _tid_1 <- newStore tidRef
+          return ()
+      Just tidStore -> do
+          tidRef <- readStore tidStore
+          tid <- readIORef tidRef
+          done <- readStore (Store done_0)
+          killThread tid
+          takeMVar done
+          newTid <- start done
+          writeIORef tidRef newTid
+  where tid_1 = 1
+        done_0 = 0
+
+-- | Start the server in a separate thread.
+start :: MVar () -- ^ Written to when the thread is killed.
+      -> IO ThreadId
+start done = do
+    (port,app) <- getApplicationDev
+    forkIO (finally (runSettings (setPort port defaultSettings) app)
+                    (putMVar done ()))
 
 {-# START_FILE app/main.hs #-}
 import Prelude              (IO)
diff --git a/hsfiles/postgres.hsfiles b/hsfiles/postgres.hsfiles
--- a/hsfiles/postgres.hsfiles
+++ b/hsfiles/postgres.hsfiles
@@ -1,5 +1,12 @@
+{-# START_FILE .dir-locals.el #-}
+((haskell-mode . ((haskell-indent-spaces . 4)
+                  (haskell-process-use-ghci . t)))
+ (hamlet-mode . ((hamlet/basic-offset . 4)
+                 (haskell-process-use-ghci . t))))
+
 {-# START_FILE .ghci #-}
 :set -i.:config:dist/build/autogen
+:set -DDEVELOPMENT
 :set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable
 
 {-# START_FILE .gitignore #-}
@@ -597,6 +604,67 @@
 
 combineScripts :: Name -> [Route Static] -> Q Exp
 combineScripts = combineScripts' development combineSettings
+
+{-# START_FILE app/DevelMain.hs #-}
+-- | Development version to be run inside GHCi.
+--
+-- start this up with:
+--
+-- cabal repl --ghc-options="-O0 -fobject-code"
+--
+-- You will need to add these packages to your .cabal file
+-- * foreign-store (very light-weight)
+-- * warp (you already depend on this, it just isn't in your .cabal file)
+--
+-- If you don't use cabal repl, you will need
+-- to run the following in GHCi or to add it to
+-- your .ghci file.
+--
+-- :set -DDEVELOPMENT
+--
+-- There is more information about this approach,
+-- on the wiki: https://github.com/yesodweb/yesod/wiki/ghci
+
+module DevelMain where
+
+import Application (getApplicationDev)
+
+import Control.Exception (finally)
+import Control.Concurrent
+import Data.IORef
+import Foreign.Store
+import Network.Wai.Handler.Warp
+
+-- | Start or restart the server.
+update :: IO ()
+update = do
+    mtidStore <- lookupStore tid_1
+    case mtidStore of
+      Nothing -> do
+          done <- newEmptyMVar
+          _done_0 <- newStore done
+          tid <- start done
+          tidRef <- newIORef tid
+          _tid_1 <- newStore tidRef
+          return ()
+      Just tidStore -> do
+          tidRef <- readStore tidStore
+          tid <- readIORef tidRef
+          done <- readStore (Store done_0)
+          killThread tid
+          takeMVar done
+          newTid <- start done
+          writeIORef tidRef newTid
+  where tid_1 = 1
+        done_0 = 0
+
+-- | Start the server in a separate thread.
+start :: MVar () -- ^ Written to when the thread is killed.
+      -> IO ThreadId
+start done = do
+    (port,app) <- getApplicationDev
+    forkIO (finally (runSettings (setPort port defaultSettings) app)
+                    (putMVar done ()))
 
 {-# START_FILE app/main.hs #-}
 import Prelude              (IO)
diff --git a/hsfiles/simple.hsfiles b/hsfiles/simple.hsfiles
--- a/hsfiles/simple.hsfiles
+++ b/hsfiles/simple.hsfiles
@@ -1,5 +1,12 @@
+{-# START_FILE .dir-locals.el #-}
+((haskell-mode . ((haskell-indent-spaces . 4)
+                  (haskell-process-use-ghci . t)))
+ (hamlet-mode . ((hamlet/basic-offset . 4)
+                 (haskell-process-use-ghci . t))))
+
 {-# START_FILE .ghci #-}
 :set -i.:config:dist/build/autogen
+:set -DDEVELOPMENT
 :set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable
 
 {-# START_FILE .gitignore #-}
@@ -516,6 +523,67 @@
 
 combineScripts :: Name -> [Route Static] -> Q Exp
 combineScripts = combineScripts' development combineSettings
+
+{-# START_FILE app/DevelMain.hs #-}
+-- | Development version to be run inside GHCi.
+--
+-- start this up with:
+--
+-- cabal repl --ghc-options="-O0 -fobject-code"
+--
+-- You will need to add these packages to your .cabal file
+-- * foreign-store (very light-weight)
+-- * warp (you already depend on this, it just isn't in your .cabal file)
+--
+-- If you don't use cabal repl, you will need
+-- to run the following in GHCi or to add it to
+-- your .ghci file.
+--
+-- :set -DDEVELOPMENT
+--
+-- There is more information about this approach,
+-- on the wiki: https://github.com/yesodweb/yesod/wiki/ghci
+
+module DevelMain where
+
+import Application (getApplicationDev)
+
+import Control.Exception (finally)
+import Control.Concurrent
+import Data.IORef
+import Foreign.Store
+import Network.Wai.Handler.Warp
+
+-- | Start or restart the server.
+update :: IO ()
+update = do
+    mtidStore <- lookupStore tid_1
+    case mtidStore of
+      Nothing -> do
+          done <- newEmptyMVar
+          _done_0 <- newStore done
+          tid <- start done
+          tidRef <- newIORef tid
+          _tid_1 <- newStore tidRef
+          return ()
+      Just tidStore -> do
+          tidRef <- readStore tidStore
+          tid <- readIORef tidRef
+          done <- readStore (Store done_0)
+          killThread tid
+          takeMVar done
+          newTid <- start done
+          writeIORef tidRef newTid
+  where tid_1 = 1
+        done_0 = 0
+
+-- | Start the server in a separate thread.
+start :: MVar () -- ^ Written to when the thread is killed.
+      -> IO ThreadId
+start done = do
+    (port,app) <- getApplicationDev
+    forkIO (finally (runSettings (setPort port defaultSettings) app)
+                    (putMVar done ()))
 
 {-# START_FILE app/main.hs #-}
 import Prelude              (IO)
diff --git a/hsfiles/sqlite.hsfiles b/hsfiles/sqlite.hsfiles
--- a/hsfiles/sqlite.hsfiles
+++ b/hsfiles/sqlite.hsfiles
@@ -1,5 +1,12 @@
+{-# START_FILE .dir-locals.el #-}
+((haskell-mode . ((haskell-indent-spaces . 4)
+                  (haskell-process-use-ghci . t)))
+ (hamlet-mode . ((hamlet/basic-offset . 4)
+                 (haskell-process-use-ghci . t))))
+
 {-# START_FILE .ghci #-}
 :set -i.:config:dist/build/autogen
+:set -DDEVELOPMENT
 :set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable
 
 {-# START_FILE .gitignore #-}
@@ -597,6 +604,67 @@
 
 combineScripts :: Name -> [Route Static] -> Q Exp
 combineScripts = combineScripts' development combineSettings
+
+{-# START_FILE app/DevelMain.hs #-}
+-- | Development version to be run inside GHCi.
+--
+-- start this up with:
+--
+-- cabal repl --ghc-options="-O0 -fobject-code"
+--
+-- You will need to add these packages to your .cabal file
+-- * foreign-store (very light-weight)
+-- * warp (you already depend on this, it just isn't in your .cabal file)
+--
+-- If you don't use cabal repl, you will need
+-- to run the following in GHCi or to add it to
+-- your .ghci file.
+--
+-- :set -DDEVELOPMENT
+--
+-- There is more information about this approach,
+-- on the wiki: https://github.com/yesodweb/yesod/wiki/ghci
+
+module DevelMain where
+
+import Application (getApplicationDev)
+
+import Control.Exception (finally)
+import Control.Concurrent
+import Data.IORef
+import Foreign.Store
+import Network.Wai.Handler.Warp
+
+-- | Start or restart the server.
+update :: IO ()
+update = do
+    mtidStore <- lookupStore tid_1
+    case mtidStore of
+      Nothing -> do
+          done <- newEmptyMVar
+          _done_0 <- newStore done
+          tid <- start done
+          tidRef <- newIORef tid
+          _tid_1 <- newStore tidRef
+          return ()
+      Just tidStore -> do
+          tidRef <- readStore tidStore
+          tid <- readIORef tidRef
+          done <- readStore (Store done_0)
+          killThread tid
+          takeMVar done
+          newTid <- start done
+          writeIORef tidRef newTid
+  where tid_1 = 1
+        done_0 = 0
+
+-- | Start the server in a separate thread.
+start :: MVar () -- ^ Written to when the thread is killed.
+      -> IO ThreadId
+start done = do
+    (port,app) <- getApplicationDev
+    forkIO (finally (runSettings (setPort port defaultSettings) app)
+                    (putMVar done ()))
 
 {-# START_FILE app/main.hs #-}
 import Prelude              (IO)
diff --git a/yesod-bin.cabal b/yesod-bin.cabal
--- a/yesod-bin.cabal
+++ b/yesod-bin.cabal
@@ -1,5 +1,5 @@
 name:            yesod-bin
-version:         1.2.10.3
+version:         1.2.11
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
