diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,13 @@
+2009.4.51
+
+### Feature
+
+* config middleware
+
+### Fix
+
+* require MPS 4.50, hack 4.50
+
 2009.4.50
 
 ### Feature
diff --git a/hack-contrib.cabal b/hack-contrib.cabal
--- a/hack-contrib.cabal
+++ b/hack-contrib.cabal
@@ -1,8 +1,8 @@
 Name:                 hack-contrib
-Version:              2009.4.50
+Version:              2009.4.51
 Build-type:           Simple
 Synopsis:             Hack contrib
-Description:
+Description:          Hack contrib
 License:              GPL
 License-file:         LICENSE
 Author:               Wang, Jinjing
@@ -15,7 +15,7 @@
 
 library
   ghc-options: -Wall
-  build-depends: base, cgi, network, haskell98, old-locale, old-time, directory, filepath, containers, bytestring, ansi-wl-pprint, mps >= 2009.4.27, data-default >= 0.2, ansi-wl-pprint, unix, time, pureMD5, hack >= 2009.4.30
+  build-depends: base, cgi, network, haskell98, old-locale, old-time, directory, filepath, containers, bytestring, ansi-wl-pprint, mps >= 2009.4.50, data-default >= 0.2, ansi-wl-pprint, unix, time, pureMD5, hack >= 2009.4.50
   hs-source-dirs: src/
   exposed-modules:  
                     Hack.Contrib.Utils
@@ -40,6 +40,8 @@
                     Hack.Contrib.Middleware.ETag
                     Hack.Contrib.Middleware.BounceFavicon
                     Hack.Contrib.Middleware.NotFound
+                    Hack.Contrib.Middleware.Config
+                    Hack.Contrib.Middleware.Inspect
                     
 
                     
diff --git a/src/Hack/Contrib/Middleware/Config.hs b/src/Hack/Contrib/Middleware/Config.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/Config.hs
@@ -0,0 +1,6 @@
+module Hack.Contrib.Middleware.Config (config) where
+
+import Hack
+
+config :: (Env -> Env) -> Middleware
+config alter app = \env -> app (alter env)
diff --git a/src/Hack/Contrib/Middleware/Inspect.hs b/src/Hack/Contrib/Middleware/Inspect.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/Inspect.hs
@@ -0,0 +1,25 @@
+module Hack.Contrib.Middleware.Inspect (inspect) where
+
+import Hack
+import Hack.Contrib.Constants
+import Hack.Contrib.Response
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), head)
+
+inspect :: Middleware
+inspect app = \env -> do
+  r <- app env
+  return $ 
+    r
+      .set_body (output env r)
+      .set_content_type _TextPlainUTF8
+  
+  where
+    output env r = 
+        [  env.show
+        ,  70.times '-'
+        ,  r.status.show
+        ,  r.headers.show
+        ,  r.body
+        ] .join "\n\n"
