diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,10 @@
+2009.4.52
+---------
+
+### Fix
+
+* Compatible with hack 4.52
+
 2009.4.51.1
 -----------
 
diff --git a/hack-handler-happstack.cabal b/hack-handler-happstack.cabal
--- a/hack-handler-happstack.cabal
+++ b/hack-handler-happstack.cabal
@@ -1,8 +1,8 @@
 Name:                 hack-handler-happstack
-Version:              2009.4.51.1
+Version:              2009.4.52
 Build-type:           Simple
-Synopsis:             Hyena Kibro handler
-Description:          Hyena Kibro handler
+Synopsis:             Hack Happstack server handler
+Description:          Hack Happstack server handler
 License:              GPL
 License-file:         LICENSE
 Author:               Wang, Jinjing
@@ -15,7 +15,7 @@
 
 library
   ghc-options: -Wall
-  build-depends: base, cgi, network, bytestring, data-default >= 0.2, hack >= 2009.4.51, happstack-server, containers, mtl
+  build-depends: base, cgi, network, bytestring, data-default >= 0.2, hack >= 2009.4.52, happstack-server >= 0.2.1, containers, mtl
   hs-source-dirs: src/
   exposed-modules:  
                     Hack.Handler.Happstack
diff --git a/src/Hack/Handler/Happstack.hs b/src/Hack/Handler/Happstack.hs
--- a/src/Hack/Handler/Happstack.hs
+++ b/src/Hack/Handler/Happstack.hs
@@ -39,13 +39,13 @@
   where
     reqToEnv conf' req =
       def { request_method = convertRequestMethod $ rqMethod req
-          , script_name = ""
-          , path_info = "/" ++ (intercalate "/" $ rqPaths req)
-          , query_string = remove_question_mark $ rqQuery req
-          , server_name = serverName conf' -- (fst $ rqPeer req) is supposed to work, but does not
-          , server_port = port conf'
-          , http = toHttp (rqHeaders req)
-          , hack_input = (\(Body x) -> C.unpack x) (rqBody req)
+          , script_name    = ""
+          , path_info      = "/" ++ (intercalate "/" $ rqPaths req)
+          , query_string   = remove_question_mark $ rqQuery req
+          , server_name    = serverName conf' -- (fst $ rqPeer req) is supposed to work, but does not
+          , server_port    = port conf'
+          , http           = toHttp (rqHeaders req)
+          , hack_input     = (\(Body x) -> C.unpack x) (rqBody req)
           }
     remove_question_mark = dropWhile (== '?')
     
@@ -61,7 +61,7 @@
           
           
           
-toHttp :: Headers -> Hack.Map
+toHttp :: Headers -> [(String, String)]
 toHttp = M.toList >>> map snd >>> map headerToPair
 
 headerToPair :: HeaderPair -> (String, String)
@@ -77,7 +77,7 @@
                     , rsValidator = Nothing }
 
 
-convertHeaders :: Hack.Map -> Happstack.Headers
+convertHeaders :: [(String, String)] -> Happstack.Headers
 convertHeaders = map pairToHeader >>> M.fromList
   where 
     pairToHeader (k,v) = ((c2b $ map toLower k), HeaderPair (c2b k) [c2b v])
