diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,4 +1,12 @@
+2009.4.52.2
+-----------
+
+### Fix
+
+* use cgi helpers, less dependency
+
 2009.4.52.1
+-----------
 
 ### Feature
 
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.4.52.1
+Version:              2009.4.52.2
 Build-type:           Simple
 Synopsis:             Hack contrib
 Description:          Hack contrib
@@ -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.50, data-default >= 0.2, ansi-wl-pprint, unix, time, pureMD5, hack >= 2009.4.52, happstack-server >= 0.2
+  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.52
   hs-source-dirs: src/
   exposed-modules:  
                     Hack.Contrib.Utils
diff --git a/src/Hack/Contrib/Middleware/ShowStatus.hs b/src/Hack/Contrib/Middleware/ShowStatus.hs
--- a/src/Hack/Contrib/Middleware/ShowStatus.hs
+++ b/src/Hack/Contrib/Middleware/ShowStatus.hs
@@ -35,7 +35,7 @@
       let 
           i       = response.status
           message = i.show_status_message .fromMaybe (i.show)
-          detail  = env.custom_"hack.showstatus.detail" .fromMaybe message
+          detail  = env.custom.get "hack.showstatus.detail" .fromMaybe message
           result  = template message detail env response
           size    = result.bytesize
       in
diff --git a/src/Hack/Contrib/Request.hs b/src/Hack/Contrib/Request.hs
--- a/src/Hack/Contrib/Request.hs
+++ b/src/Hack/Contrib/Request.hs
@@ -13,8 +13,8 @@
 import Network.CGI.Cookie
 import Data.ByteString.Lazy.Char8 (pack, unpack)
 
-import qualified Happstack.Server.MessageWrap as HM
-import qualified Happstack.Server.HTTP.Types as HT
+-- import qualified Happstack.Server.MessageWrap as HM
+-- import qualified Happstack.Server.HTTP.Types as HT
 
 body :: Env -> String
 body = hack_input
@@ -29,7 +29,7 @@
 path env = env.script_name ++ env.path_info
 
 content_type :: Env -> String
-content_type env = env.http_ _ContentType .fromMaybe ""
+content_type env = env.http.get _ContentType .fromMaybe ""
 
 media_type :: Env -> String
 media_type env = env.content_type.split "\\s*[;,]\\s*" .first.lower
@@ -51,7 +51,7 @@
 content_charset env = env.media_type_params.lookup "charset" .fromMaybe ""
 
 host :: Env -> String
-host env = env.http_ _Host .fromMaybe (env.server_name) .gsub ":\\d+\\z" ""
+host env = env.http.get _Host .fromMaybe (env.server_name) .gsub ":\\d+\\z" ""
 
 params :: Env -> [(String, String)]
 params env =
@@ -61,29 +61,26 @@
 
 inputs :: Env -> [(String, String)]
 inputs env = 
-  case env.media_type of 
-    "application/x-www-form-urlencoded" -> env.body.formDecode
-    "multipart/form-data" -> 
-      env
-        .body
-        .pack
-        .HM.multipartDecode (env.media_type_params)
-        .concatMap to_headers
-    otherwise -> []
-  
+  env
+    .http
+    .map_fst (upper > gsub "-" "_") -- cgi env use all cap letters
+    .(("REQUEST_METHOD", env.request_method.show) : ) -- for cgi request
+    .flip decodeInput (env.body.pack)
+    .fst
+    .concatMap to_headers
   where
-    to_headers (k, input) = case input.HT.inputFilename of
-      Nothing -> [(k, input.HT.inputValue.unpack)]
+    to_headers (k, input) = case input.inputFilename of
+      Nothing -> [(k, input.inputValue.unpack)]
       Just name -> 
-        [  (k, input.HT.inputValue.unpack)
+        [  (k, input.inputValue.unpack)
         ,  ("hack_input_file_name_" ++ k, name)
         ]
 
 referer :: Env -> String
-referer = http_ _Referer > fromMaybe "/"
+referer = http > get _Referer > fromMaybe "/"
 
 cookies :: Env -> [(String, String)]
-cookies env = case env.http_ _Cookie of
+cookies env = case env.http.get _Cookie of
   Nothing -> []
   Just s -> s.readCookies
 
@@ -93,14 +90,8 @@
     then env.path 
     else env.path ++ "?" ++ env.query_string
 
-http_ :: String -> Env -> Maybe String
-http_ s env = env.http.get s
-
 set_http :: String -> String -> Env -> Env
 set_http k v env = env {http = env.http.put k v}
-
-custom_ :: String -> Env -> Maybe String
-custom_ s env = env.custom.get s
 
 set_custom :: String -> String -> Env -> Env
 set_custom k v env = env {custom = env.custom.put k v}
diff --git a/src/Hack/Contrib/Utils.hs b/src/Hack/Contrib/Utils.hs
--- a/src/Hack/Contrib/Utils.hs
+++ b/src/Hack/Contrib/Utils.hs
@@ -18,7 +18,6 @@
 import Control.Monad (mplus, MonadPlus)
 import Data.Maybe
 import System.IO
-import System.Locale
 import System.FilePath ((</>))
 import Control.Category (Category)
 import Data.List (lookup)
