diff --git a/happstack-server.cabal b/happstack-server.cabal
--- a/happstack-server.cabal
+++ b/happstack-server.cabal
@@ -1,5 +1,5 @@
 Name:                happstack-server
-Version:             6.2.5
+Version:             6.3.1
 Synopsis:            Web related tools and services.
 Description:         Happstack Server provides an HTTP server and a rich set of functions for routing requests, handling query parameters, generating responses, working with cookies, serving files, and more. For in-depth documentation see the Happstack Crash Course <http://happstack.com/docs/crashcourse/index.html>
 License:             BSD3
diff --git a/src/Happstack/Server/Routing.hs b/src/Happstack/Server/Routing.hs
--- a/src/Happstack/Server/Routing.hs
+++ b/src/Happstack/Server/Routing.hs
@@ -35,10 +35,10 @@
 --
 -- Examples
 -- 
--- > methodM GET                  -- match GET
--- > methodM [HEAD, GET]          -- match HEAD or GET
--- > methodM (not . (==) DELETE)  -- match any method except DELETE
--- > methodM ()                   -- match any method
+-- > method GET                  -- match GET
+-- > method [HEAD, GET]          -- match HEAD or GET
+-- > method (not . (==) DELETE)  -- match any method except DELETE
+-- > method ()                   -- match any method
 class MatchMethod m where matchMethod :: m -> Method -> Bool
 instance MatchMethod Method where matchMethod m = (== m)
 instance MatchMethod [Method] where matchMethod methods = (`elem` methods)
@@ -78,8 +78,20 @@
     rq <- askRq
     unless (f rq) mzero
 
+-- | Guard against the method only (as opposed to 'methodM').
+--
+-- Example:
+--
+-- > handler :: ServerPart Response
+-- > handler =
+-- >     do methodOnly [GET, HEAD]
+-- >        ...
+method :: (ServerMonad m, MonadPlus m, MatchMethod method) => method -> m ()
+method meth = guardRq $ \rq -> matchMethod meth (rqMethod rq)
+
+
 -- | Guard against the method. This function also guards against
--- *any remaining path segments*. See 'methodOnly' for the version
+-- *any remaining path segments*. See 'method' for the version
 -- that guards only by method.
 --
 -- Example:
@@ -88,6 +100,13 @@
 -- > handler =
 -- >     do methodM [GET, HEAD]
 -- >        ...
+-- 
+-- NOTE: This function is largely retained for backwards
+-- compatibility. The fact that implicitly calls 'nullDir' is often
+-- forgotten and leads to confusion. It is probably better to just use
+-- 'method' and call 'nullDir' explicitly.
+-- 
+-- This function will likely be deprecated in the future.
 methodM :: (ServerMonad m, MonadPlus m, MatchMethod method) => method -> m ()
 methodM meth = methodOnly meth >> nullDir
 
@@ -100,7 +119,8 @@
 -- >     do methodOnly [GET, HEAD]
 -- >        ...
 methodOnly :: (ServerMonad m, MonadPlus m, MatchMethod method) => method -> m ()
-methodOnly meth = guardRq $ \rq -> matchMethod meth (rqMethod rq)
+methodOnly = method
+{-# DEPRECATED methodOnly "this function is just an alias for method now" #-}
 
 -- | Guard against the method. Note, this function also guards against
 -- any remaining path segments. Similar to 'methodM' but with a different type signature.
@@ -109,16 +129,11 @@
 --
 -- > handler :: ServerPart Response
 -- > handler = methodSP [GET, HEAD] $ subHandler
+-- 
+-- NOTE: This style of combinator is going to be deprecated in the
+-- future. It is better to just use 'method'.
 methodSP :: (ServerMonad m, MonadPlus m, MatchMethod method) => method -> m b-> m b
 methodSP m handle = methodM m >> handle
-
--- | Guard against the method. Note, this function also guards against any
--- remaining path segments.
---
--- DEPRECATED:  Use 'methodSP', 'methodM', or 'methodOnly'
-method :: (MatchMethod method, Monad m) => method -> WebT m a -> ServerPartT m a
-method m handle = methodSP m (anyRequest handle)
-{-# DEPRECATED method "you should be able to use methodSP" #-}
 
 -- | guard which only succeeds if there are no remaining path segments
 --
diff --git a/src/Happstack/Server/SimpleHTTP.hs b/src/Happstack/Server/SimpleHTTP.hs
--- a/src/Happstack/Server/SimpleHTTP.hs
+++ b/src/Happstack/Server/SimpleHTTP.hs
@@ -44,6 +44,7 @@
     , bindPort
     , bindIPv4
     , parseConfig
+    , waitForTermination
     -- * Re-exported modules
     -- ** Basic ServerMonad functionality
     , module Happstack.Server.Monads
@@ -94,6 +95,12 @@
                                                  , ArgOrder(Permute)
                                                  , getOpt
                                                  )
+#ifdef UNIX
+import Control.Concurrent.MVar
+import System.Posix.Signals hiding (Handler)
+import System.Posix.IO ( stdInput )
+import System.Posix.Terminal ( queryTerminal )
+#endif
 
 -- | An array of 'OptDescr', useful for processing command line
 -- options into an 'Conf' for 'simpleHTTP'.
@@ -172,6 +179,7 @@
 bindPort conf = Listen.listenOn (port conf)
 
 -- | Bind to ip and port and return the socket for use with 'simpleHTTPWithSocket'.
+--
 -- >
 -- > import Happstack.Server
 -- >
@@ -181,6 +189,7 @@
 -- >           simpleHTTPWithSocket s conf $ ok $ toResponse $ 
 -- >             "now listening on ip addr " ++ addr ++ 
 -- >             " and port " ++ show (port conf)
+--
 bindIPv4 :: String  -- ^ IP address to bind to (must be an IP address and not a host name)
          -> Int     -- ^ port number to bind to
          -> IO Socket
@@ -205,3 +214,26 @@
     ++ "It is just not here</p>"
     ++ "</body></html>"
     where ver = DV.showVersion Cabal.version
+
+
+-- | Wait for a signal.
+--   On unix, a signal is sigINT or sigTERM (aka Control-C).
+--  
+-- On windows, the signal is entering: e <return>
+waitForTermination :: IO ()
+waitForTermination
+    = do
+#ifdef UNIX
+         istty <- queryTerminal stdInput
+         mv <- newEmptyMVar
+         installHandler softwareTermination (CatchOnce (putMVar mv ())) Nothing
+         case istty of
+           True  -> do installHandler keyboardSignal (CatchOnce (putMVar mv ())) Nothing
+                       return ()
+           False -> return ()
+         takeMVar mv
+#else
+         let loop 'e' = return () 
+             loop _   = getChar >>= loop
+         loop 'c'
+#endif
