diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,14 @@
+2009.8.18
+---------
+
+### Feature
+
+* new middleware
+
+### Fix
+
+* mps dep
+
 2009.8.16
 ---------
 
diff --git a/hack-contrib.cabal b/hack-contrib.cabal
--- a/hack-contrib.cabal
+++ b/hack-contrib.cabal
@@ -1,5 +1,5 @@
 Name:                 hack-contrib
-Version:              2009.8.16
+Version:              2009.8.18
 Build-type:           Simple
 Synopsis:             Hack contrib
 Description:          Common middlewares and utilities that helps working with Hack
@@ -15,7 +15,7 @@
 
 library
   ghc-options: -Wall
-  build-depends: base >=4 && < 5, cgi, network, haskell98, old-locale, old-time, directory, filepath, containers, bytestring, ansi-wl-pprint, data-default >= 0.2, ansi-wl-pprint, time, pureMD5, mps >= 2009.6.25, hack >= 2009.5.19
+  build-depends: base >=4 && < 5, cgi, network, haskell98, old-locale, old-time, directory, filepath, containers, bytestring, ansi-wl-pprint, data-default >= 0.2, ansi-wl-pprint, time, pureMD5, mps >= 2009.8.18.1, hack >= 2009.7.15
   hs-source-dirs: src/
   exposed-modules:  
                     
@@ -39,6 +39,8 @@
                     Hack.Contrib.Middleware.SimpleAccessLogger
                     Hack.Contrib.Middleware.Static
                     Hack.Contrib.Middleware.URLMap
+                    Hack.Contrib.Middleware.IOConfig
+                    Hack.Contrib.Middleware.UserMime
                     Hack.Contrib.Mime
                     Hack.Contrib.Request
                     Hack.Contrib.Response
diff --git a/src/Hack/Contrib/Middleware/IOConfig.hs b/src/Hack/Contrib/Middleware/IOConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/IOConfig.hs
@@ -0,0 +1,6 @@
+module Hack.Contrib.Middleware.IOConfig (ioconfig) where
+
+import Hack
+
+ioconfig :: (Env -> IO Env) -> Middleware
+ioconfig before app = \env -> before env >>= app
diff --git a/src/Hack/Contrib/Middleware/UserMime.hs b/src/Hack/Contrib/Middleware/UserMime.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/UserMime.hs
@@ -0,0 +1,17 @@
+module Hack.Contrib.Middleware.UserMime (user_mime) where
+
+import Data.List (find)
+import Hack
+import Hack.Contrib.Response
+import Hack.Contrib.Utils
+import MPS.Light
+import Prelude hiding ((.), (-))
+
+
+user_mime :: [(String, String)] -> Middleware
+user_mime h app env = do
+  r <- app env
+  case h.only_fst.find mime >>= flip lookup h of
+    Nothing -> return r
+    Just v -> return - r.set_content_type v
+  where mime x = env.path_info.ends_with ('.' : x)
