diff --git a/src/Network/Wai/Trans.hs b/src/Network/Wai/Trans.hs
--- a/src/Network/Wai/Trans.hs
+++ b/src/Network/Wai/Trans.hs
@@ -27,9 +27,13 @@
   , liftMiddleware
   , runApplicationT
   , runMiddlewareT
+  , hoistApplicationT
+  , hoistMiddlewareT
   , -- * Exception catching
     catchApplicationT
   , catchMiddlewareT
+  , -- * General Purpose
+    readingRequest
   ) where
 
 
@@ -55,17 +59,38 @@
 runMiddlewareT :: MonadIO m => (forall a. m a -> IO a) -> MiddlewareT m -> Middleware
 runMiddlewareT run mid app = runApplicationT run (mid (liftApplication run app))
 
+hoistApplicationT :: ( Monad m
+                     , Monad n
+                     ) => (forall a. m a -> n a)
+                       -> (forall a. n a -> m a)
+                       -> ApplicationT m
+                       -> ApplicationT n
+hoistApplicationT to from app req resp =
+  to $ app req (from . resp)
 
+hoistMiddlewareT :: ( Monad m
+                    , Monad n
+                    ) => (forall a. m a -> n a)
+                      -> (forall a. n a -> m a)
+                      -> MiddlewareT m
+                      -> MiddlewareT n
+hoistMiddlewareT to from mid =
+  hoistApplicationT to from . mid . hoistApplicationT from to
+
+
 catchApplicationT :: ( MonadCatch m
                      , Exception e
                      ) => ApplicationT m -> (e -> ApplicationT m) -> ApplicationT m
 catchApplicationT x f req respond =
   (x req respond) `catch` (\e -> f e req respond)
 
-catchMiddlewareT :: ( MonadIO m
-                    , MonadCatch m
+catchMiddlewareT :: ( MonadCatch m
                     , Exception e
                     ) => MiddlewareT m -> (e -> MiddlewareT m) -> MiddlewareT m
 catchMiddlewareT x f app =
   (x app) `catchApplicationT` (\e -> f e app)
 
+readingRequest :: Monad m => (Request -> m ()) -> MiddlewareT m
+readingRequest f app req resp = do
+  f req
+  app req resp
diff --git a/wai-transformers.cabal b/wai-transformers.cabal
--- a/wai-transformers.cabal
+++ b/wai-transformers.cabal
@@ -1,5 +1,5 @@
 Name:                   wai-transformers
-Version:                0.0.4
+Version:                0.0.5
 Author:                 Athan Clark <athan.clark@gmail.com>
 Maintainer:             Athan Clark <athan.clark@gmail.com>
 License:                BSD3
