diff --git a/bamboo.cabal b/bamboo.cabal
--- a/bamboo.cabal
+++ b/bamboo.cabal
@@ -1,5 +1,5 @@
 Name:                 bamboo
-Version:              2009.4.30
+Version:              2009.4.50
 Build-type:           Simple
 Synopsis:             A simple blog engine on Hack
 Description:          A simple blog engine on Hack
@@ -15,7 +15,7 @@
 
 library
   ghc-options: -Wall -fno-warn-missing-signatures -fno-warn-name-shadowing -fno-warn-orphans -fno-warn-type-defaults
-  build-depends: base, cgi, network, haskell98, old-locale, old-time, time, unix, bytestring, template, base64-string, zlib, directory, ansi-wl-pprint, filepath, containers, process, mps >= 2008.11.6, parsedate >= 3000.0.0, rss >= 3000.0.1, xhtml, kibro >= 0.4.2, utf8-string >= 0.3.3, pandoc, parsec >= 2, MissingH, gravatar >= 0.3, data-default >= 0.2, hcheat >= 2008.11.6, hack >= 2009.4.30, hack-contrib >= 2009.4.30
+  build-depends: base, cgi, network, haskell98, old-locale, old-time, time, unix, bytestring, template, base64-string, zlib, directory, ansi-wl-pprint, filepath, containers, process, mps >= 2008.11.6, parsedate >= 3000.0.0, rss >= 3000.0.1, xhtml, kibro >= 0.4.2, utf8-string >= 0.3.3, pandoc, parsec >= 2, MissingH, gravatar >= 0.3, data-default >= 0.2, hcheat >= 2008.11.6, hack >= 2009.4.30, hack-contrib >= 2009.4.50
   hs-source-dirs: src/
   exposed-modules:  
                     Bamboo
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,10 @@
+2009.4.50
+---------
+
+### Feature
+
+* Work with hack.contrib 4.50
+
 2009.4.27
 ----------
 
diff --git a/readme.md b/readme.md
--- a/readme.md
+++ b/readme.md
@@ -64,7 +64,7 @@
 #### install bamboo
 
     cabal install happy
-    cabal install rss
+    cabal install rss --reinstall
     cabal install hack
     cabal install hack-contrib
     cabal install bamboo
@@ -75,6 +75,8 @@
 
 ##### install hyena
 
+    cabal install network --reinstall
+    
     git clone git://github.com/tibbe/hyena.git
     cd hyena
     cabal install
@@ -99,10 +101,10 @@
     import Hack.Handler.Hyena
 
     import Hack.Utils
-    import Hack.Contrib.ContentType
-    import Hack.Contrib.ContentSize
-    import Hack.Contrib.ShowExceptions
-    import Hack.Contrib.Static
+    import Hack.Contrib.Middleware.ContentType
+    import Hack.Contrib.Middleware.ContentSize
+    import Hack.Contrib.Middleware.ShowExceptions
+    import Hack.Contrib.Middleware.Static
 
 
     import qualified Hack.Contrib.Head as H
diff --git a/src/Bamboo.hs b/src/Bamboo.hs
--- a/src/Bamboo.hs
+++ b/src/Bamboo.hs
@@ -1,10 +1,5 @@
-{-# LANGUAGE NoMonomorphismRestriction#-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE QuasiQuotes #-}
-
 module Bamboo
   (
-    module Bamboo.Controller.Application,
     bamboo
   ) where
 
diff --git a/src/Bamboo/Helper/Helper.hs b/src/Bamboo/Helper/Helper.hs
--- a/src/Bamboo/Helper/Helper.hs
+++ b/src/Bamboo/Helper/Helper.hs
@@ -23,6 +23,8 @@
 import Data.Default
 import System.Directory
 import Hack
+import Hack.Contrib.Response
+import Hack.Contrib.Constants
 
 (/) :: FilePath -> FilePath -> FilePath
 (/) = (</>)
@@ -110,12 +112,12 @@
 div_class_id x y = thediv ! [theclass x, id y]
 
 xml_header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-output_html x = Response 
-  {  status = 200
-  ,  headers = [("Content-Type", "text/html; charset=UTF-8")]
-  ,  body = x.show
-  }
-  .return
+output_html x = 
+  def 
+    .set_status 200
+    .set_body (x.show.unescape_unicode_xml.u2b)
+    .set_content_type _TextHtmlUTF8
+    .return
 
 spaced_url = gsub "/" " / "
 
diff --git a/src/Bamboo/Helper/Html.hs b/src/Bamboo/Helper/Html.hs
--- a/src/Bamboo/Helper/Html.hs
+++ b/src/Bamboo/Helper/Html.hs
@@ -4,10 +4,7 @@
 module Bamboo.Helper.Html where
 
 import Text.XHtml.Strict
-import Bamboo.Helper.PreludeEnv
-import Char
 
-
 span = thespan
 
 div = thediv
@@ -22,17 +19,6 @@
 ci x y = ic y x
 
 ul = ulist
-
-
-
-escape_html_unicode = concatMap fixChar
-    where
-      fixChar '<' = "<"
-      fixChar '>' = ">"
-      fixChar '&' = "&"
-      fixChar '"' = "\""
-      fixChar c | ord c < 0x80 = [c]
-      fixChar c = "&#" ++ show (ord c) ++ ";"
 
 link = hotlink
 img = image
diff --git a/src/Bamboo/Helper/PreludeEnv.hs b/src/Bamboo/Helper/PreludeEnv.hs
--- a/src/Bamboo/Helper/PreludeEnv.hs
+++ b/src/Bamboo/Helper/PreludeEnv.hs
@@ -8,7 +8,7 @@
 ) where
 
 import Prelude hiding ((.), (/), (^), id, span, readFile, writeFile, div, (>))
-import MPSUTF8 hiding (base, col, date, strip)
+import MPSUTF8 hiding (base, col, date, strip, format_time)
 import qualified MPSUTF8 as MPS
 import Control.Arrow ((>>>))
 
diff --git a/src/Bamboo/Type/Plugin.hs b/src/Bamboo/Type/Plugin.hs
--- a/src/Bamboo/Type/Plugin.hs
+++ b/src/Bamboo/Type/Plugin.hs
@@ -33,6 +33,9 @@
   | otherwise = Nothing
 
 
+
+-- OK.. unless I get drunk again, I won't be able to understand how this works....
+
 parse_plugin x = x.gsub "\n" "".split "," .map (split ":") .inner_map strip .map tuple2.parse_it where
   parse_it xs = Plugin { plugin_type = xs.at plugin_id, args = xs.reject (fst > (is plugin_id)) }
   at x xs = case (xs.lookup x) >>= parse_plugin_type of
diff --git a/src/Bamboo/Type/Reader.hs b/src/Bamboo/Type/Reader.hs
--- a/src/Bamboo/Type/Reader.hs
+++ b/src/Bamboo/Type/Reader.hs
@@ -8,7 +8,6 @@
 
 import Text.XHtml.Strict
 import Data.Default
-import Bamboo.Helper.Html
 
 data Reader = Markdown | RST | HTML | Latex deriving (Show, Eq)
 
@@ -35,7 +34,7 @@
 rr :: Reader -> String -> Html
 rr Markdown    = to_html readMarkdown
 rr RST         = to_html readRST
-rr HTML        = escape_html_unicode > primHtml
+rr HTML        = primHtml
 rr Latex       = to_html readLaTeX
 
 render_to_html = rr
