diff --git a/Network/Wai/Handler/DevelServer.hs b/Network/Wai/Handler/DevelServer.hs
--- a/Network/Wai/Handler/DevelServer.hs
+++ b/Network/Wai/Handler/DevelServer.hs
@@ -6,6 +6,8 @@
     ( run
     , runQuit
     , runNoWatch
+    , runWithReloadActions
+    , runQuitWithReloadActions
     ) where
 
 import Language.Haskell.Interpreter hiding (typeOf)
@@ -37,14 +39,18 @@
            -> (FilePath -> IO [FilePath]) -> IO ()
 runNoWatch port modu func extras = do
     ah <- initAppHolder
-    _ <- reload modu func extras Nothing ah
+    _ <- reload modu func extras Nothing ah []
     Warp.run port $ toApp ah
 
 runQuit :: Int -> ModuleName -> FunctionName -> (FilePath -> IO [FilePath])
         -> IO ()
-runQuit port modu func extras = do
+runQuit port modu func extras = runQuitWithReloadActions port modu func extras []
+
+runQuitWithReloadActions :: Int -> ModuleName -> FunctionName -> (FilePath -> IO [FilePath])
+                         -> [IO (IO ())] -> IO ()
+runQuitWithReloadActions port modu func extras actions = do
     sig <- newEmptyMVar
-    _ <- forkIO $ run port modu func extras (Just sig)
+    _ <- forkIO $ runWithReloadActions port modu func extras (Just sig) actions
     go sig
   where
     go sig = do
@@ -57,13 +63,19 @@
                 go sig
             _ -> go sig
 
-run :: Int -> ModuleName -> FunctionName -> (FilePath -> IO [FilePath]) -> Maybe (MVar ())
-    -> IO ()
-run port modu func extras msig = do
+runWithReloadActions :: Int -> ModuleName -> FunctionName -> (FilePath -> IO [FilePath]) 
+                     -> Maybe (MVar ()) -> [IO (IO ())] -> IO ()
+runWithReloadActions port modu func extras msig initActions = do
+    actions <- mapM id initActions
     ah <- initAppHolder
-    _ <- forkIO $ fillApp modu func extras ah msig
+    _ <- forkIO $ fillApp modu func extras ah msig actions 
     Warp.run port $ toApp ah
+    return ()
 
+run :: Int -> ModuleName -> FunctionName -> (FilePath -> IO [FilePath]) -> Maybe (MVar ())
+    -> IO ()
+run port modu func extras msig = runWithReloadActions port modu func extras msig []
+
 {-
 startApp :: Queue -> Handler -> IO ()
 startApp queue withApp = do
@@ -93,8 +105,8 @@
 constSE = const
 
 fillApp :: String -> String
-        -> (FilePath -> IO [FilePath]) -> AppHolder -> Maybe (MVar ()) -> IO ()
-fillApp modu func dirs ah msig =
+        -> (FilePath -> IO [FilePath]) -> AppHolder -> Maybe (MVar ()) -> [IO ()] -> IO ()
+fillApp modu func dirs ah msig actions =
     go Nothing []
   where
     go prevError prevFiles = do
@@ -107,7 +119,7 @@
                     return $ times /= map snd prevFiles
         (newError, newFiles) <-
             if toReload
-                then reload modu func dirs prevError ah
+                then reload modu func dirs prevError ah actions
                 else return (prevError, prevFiles)
         threadDelay 1000000
         go newError newFiles
@@ -116,8 +128,9 @@
        -> (FilePath -> IO [FilePath])
        -> Maybe SomeException
        -> AppHolder
+       -> [IO ()]
        -> IO (Maybe SomeException, [(FilePath, ClockTime)])
-reload modu func extras prevError ah = do
+reload modu func extras prevError ah actions = do
     case prevError of
          Nothing -> putStrLn "Attempting to interpret your app..."
          _       -> return ()
@@ -136,6 +149,7 @@
             E.handle onInitErr $ do
                 swapApp (\f -> app $ f . debug) ah
                 times <- getTimes files
+                sequence_ actions
                 return (Nothing, zip files times)
     where
         onInitErr e = do
diff --git a/wai-handler-devel.cabal b/wai-handler-devel.cabal
--- a/wai-handler-devel.cabal
+++ b/wai-handler-devel.cabal
@@ -1,5 +1,5 @@
 Name:                wai-handler-devel
-Version:             0.4.3.1
+Version:             0.4.4
 Synopsis:            WAI server that automatically reloads code after modification.
 Description:         This handler automatically reloads your source code upon any changes. It works by using the hint package, essentially embedding GHC inside the handler. The handler (both the executable and library) takes three arguments: the port to listen on, the module name containing the application function, and the name of the function.
                      .
@@ -26,13 +26,13 @@
                    , wai-extra             >= 0.4           && < 0.5
                    , http-types            >= 0.6           && < 0.7
                    , warp                  >= 0.4           && < 0.5
-                   , directory             >= 1.0           && < 1.2
-                   , network               >= 2.2           && < 2.4
-                   , bytestring            >= 0.9           && < 0.10
+                   , directory                >= 1.0.1 && < 1.2
+                   , network                  >= 2.2.1.5 && < 2.4
+                   , bytestring                >= 0.9.1.4  && < 0.10
                    , hint                  >= 0.3.2.3       && < 0.4
                    , text                  >= 0.7           && < 0.12
                    , old-time              >= 1.0           && < 1.1
-                   , enumerator            >= 0.4.6         && < 0.5
+                   , enumerator             >= 0.4.8    && < 0.5
                    , transformers          >= 0.2.2         && < 0.3
                    , attoparsec-text       >= 0.8.2         && < 0.9
   Exposed-modules:   Network.Wai.Handler.DevelServer
@@ -40,11 +40,11 @@
   ghc-options:       -Wall
 
 Executable           wai-handler-devel
-  Build-Depends:     cmdargs >= 0.4 && < 0.9
+  Build-Depends:     cmdargs >= 0.4
   ghc-options:       -Wall -O2 -threaded
   main-is:           wai-handler-devel.hs
 
 Executable           wai-handler-devel-unwatched
-  Build-Depends:     cmdargs >= 0.4 && < 0.9
+  Build-Depends:     cmdargs >= 0.4
   ghc-options:       -Wall -O2 -threaded
   main-is:           wai-handler-devel-unwatched.hs
