diff --git a/Lucu.cabal b/Lucu.cabal
--- a/Lucu.cabal
+++ b/Lucu.cabal
@@ -8,7 +8,7 @@
         without messing around FastCGI. It is also intended to be run
         behind a reverse-proxy so it doesn't have some facilities like
         logging, client filtering or such like.
-Version: 0.7
+Version: 0.7.0.1
 License: PublicDomain
 License-File: COPYING
 Author: PHO <pho at cielonegro dot org>
@@ -16,7 +16,7 @@
 Stability: experimental
 Homepage: http://cielonegro.org/Lucu.html
 Category: Network
-Tested-With: GHC == 6.12.1
+Tested-With: GHC == 7.0.3
 Cabal-Version: >= 1.6
 Build-Type: Simple
 Extra-Source-Files:
@@ -43,19 +43,19 @@
 
 Library
     Build-Depends:
-        HsOpenSSL   == 0.8.*,
-        base        == 4.2.*,
+        HsOpenSSL   == 0.10.*,
+        base        == 4.3.*,
         bytestring  == 0.9.*,
-        containers  == 0.3.*,
-        dataenc     == 0.13.*,
-        filepath    == 1.1.*,
-        directory   == 1.0.*,
+        containers  == 0.4.*,
+        dataenc     == 0.14.*,
+        filepath    == 1.2.*,
+        directory   == 1.1.*,
         haskell-src == 1.0.*,
-        hxt         == 8.5.*,
-        mtl         == 1.1.*,
-        network     == 2.2.*,
-        stm         == 2.1.*,
-        time        == 1.1.*,
+        hxt         == 9.1.*,
+        mtl         == 2.0.*,
+        network     == 2.3.*,
+        stm         == 2.2.*,
+        time        == 1.2.*,
         time-http   == 0.1.*,
         unix        == 2.4.*,
         zlib        == 0.5.*
diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,8 @@
+Changes from 0.7 to 0.7.0.1
+---------------------------
+* Fixed build failure on recent GHC and other libraries.
+
+
 Changes from 0.6 to 0.7
 -----------------------
 * Network.HTTP.Lucu.Resource: (Suggested by Voker57)
diff --git a/Network/HTTP/Lucu/Abortion.hs b/Network/HTTP/Lucu/Abortion.hs
--- a/Network/HTTP/Lucu/Abortion.hs
+++ b/Network/HTTP/Lucu/Abortion.hs
@@ -28,8 +28,7 @@
 import           System.IO.Unsafe
 import           Text.XML.HXT.Arrow.WriteDocument
 import           Text.XML.HXT.Arrow.XmlArrow
-import           Text.XML.HXT.Arrow.XmlIOStateArrow
-import           Text.XML.HXT.DOM.XmlKeywords
+import           Text.XML.HXT.Arrow.XmlState
 
 
 data Abortion = Abortion {
@@ -102,7 +101,7 @@
             -> let [html] = unsafePerformIO 
                             $ runX ( mkDefaultPage conf (aboStatus abo) (txt msg)
                                      >>>
-                                     writeDocumentToString [(a_indent, v_1)]
+                                     writeDocumentToString [ withIndent True ]
                                    )
                in
                  html
diff --git a/Network/HTTP/Lucu/DefaultPage.hs b/Network/HTTP/Lucu/DefaultPage.hs
--- a/Network/HTTP/Lucu/DefaultPage.hs
+++ b/Network/HTTP/Lucu/DefaultPage.hs
@@ -22,9 +22,8 @@
 import           System.IO.Unsafe
 import           Text.XML.HXT.Arrow.WriteDocument
 import           Text.XML.HXT.Arrow.XmlArrow
-import           Text.XML.HXT.Arrow.XmlIOStateArrow
+import           Text.XML.HXT.Arrow.XmlState
 import           Text.XML.HXT.DOM.TypeDefs
-import           Text.XML.HXT.DOM.XmlKeywords
 
 
 getDefaultPage :: Config -> Maybe Request -> Response -> String
@@ -34,7 +33,7 @@
         unsafePerformIO $
         do [xmlStr] <- runX ( mkDefaultPage conf (resStatus res) msgA
                               >>>
-                              writeDocumentToString [ (a_indent, v_1) ]
+                              writeDocumentToString [ withIndent True ]
                             )
            return xmlStr
 
diff --git a/Network/HTTP/Lucu/Parser.hs b/Network/HTTP/Lucu/Parser.hs
--- a/Network/HTTP/Lucu/Parser.hs
+++ b/Network/HTTP/Lucu/Parser.hs
@@ -52,7 +52,7 @@
     )
     where
 
-import           Control.Monad.State.Strict
+import           Control.Monad.State.Strict hiding (state)
 import qualified Data.ByteString.Lazy as Lazy (ByteString)
 import qualified Data.ByteString.Lazy.Char8 as B hiding (ByteString)
 import qualified Data.Foldable as Fold
diff --git a/Network/HTTP/Lucu/Preprocess.hs b/Network/HTTP/Lucu/Preprocess.hs
--- a/Network/HTTP/Lucu/Preprocess.hs
+++ b/Network/HTTP/Lucu/Preprocess.hs
@@ -1,3 +1,6 @@
+{-# LANGUAGE
+    BangPatterns
+  #-}
 module Network.HTTP.Lucu.Preprocess
     ( preprocess
     )
@@ -47,9 +50,8 @@
 -}
 
 preprocess :: Interaction -> STM ()
-preprocess itr
-    = itr `seq`
-      do req <- readItr itr itrRequest fromJust
+preprocess !itr
+    = do req <- readItr itr itrRequest fromJust
 
          let reqVer = reqVersion req
 
@@ -109,9 +111,8 @@
 
 
       updateAuthority :: Strict.ByteString -> Strict.ByteString -> STM ()
-      updateAuthority host portStr
-          = host `seq` portStr `seq`
-            updateItr itr itrRequest
+      updateAuthority !host !portStr
+          = updateItr itr itrRequest
             $! \ (Just req) -> Just req {
                                  reqURI = let uri = reqURI req
                                           in uri {
@@ -125,9 +126,8 @@
                 
 
       preprocessHeader :: Request -> STM ()
-      preprocessHeader req
-          = req `seq`
-            do case getHeader (C8.pack "Expect") req of
+      preprocessHeader !req
+          = do case getHeader (C8.pack "Expect") req of
                  Nothing    -> return ()
                  Just value -> if value `noCaseEq` C8.pack "100-continue" then
                                    writeItr itr itrExpectedContinue True
diff --git a/Network/HTTP/Lucu/Resource.hs b/Network/HTTP/Lucu/Resource.hs
--- a/Network/HTTP/Lucu/Resource.hs
+++ b/Network/HTTP/Lucu/Resource.hs
@@ -413,7 +413,7 @@
 -- |Tell the system that the 'Resource' found an entity for the
 -- request URI. If this is a GET or HEAD request, a found entity means
 -- a datum to be replied. If this is a PUT or DELETE request, it means
--- a datum which was stored for the URI up to now. It is an error to
+-- a datum which was stored for the URI until now. It is an error to
 -- compute 'foundEntity' if this is a POST request.
 --
 -- Computation of 'foundEntity' performs \"If-Match\" test or
@@ -434,7 +434,7 @@
                   $ setHeader' (C8.pack "Last-Modified") (C8.pack $ HTTP.format timeStamp)
          when (method == POST)
                   $ abort InternalServerError []
-                        (Just "Illegal computation of foundEntity for POST request.")
+                        (Just "Illegal computation of foundEntity for a POST request.")
          foundETag tag
 
          driftTo GettingBody
