diff --git a/CouchDB.cabal b/CouchDB.cabal
--- a/CouchDB.cabal
+++ b/CouchDB.cabal
@@ -1,5 +1,5 @@
 Name:           CouchDB
-Version:        0.8.1.1
+Version:        0.8.1.2
 Cabal-Version:	>= 1.2.4
 Copyright:      Copyright (c) 2008 Arjun Guha and Brendan Hickey
 License:        BSD3
@@ -19,7 +19,7 @@
   Hs-Source-Dirs:
     src
   Build-Depends:
-    base, mtl, containers, network, HTTP<4000.0.0, json>=0.3.3
+    base, mtl, containers, network, HTTP>=4000.0.4, json>=0.4.3
   ghc-options:
     -fwarn-incomplete-patterns
   Extensions:     
diff --git a/src/Database/CouchDB/HTTP.hs b/src/Database/CouchDB/HTTP.hs
--- a/src/Database/CouchDB/HTTP.hs
+++ b/src/Database/CouchDB/HTTP.hs
@@ -14,7 +14,6 @@
 import Data.IORef
 import Control.Concurrent
 import Network.TCP
-import Network.Stream
 import Network.HTTP
 import Network.URI
 import Control.Exception (finally)
@@ -23,7 +22,7 @@
 -- |Describes a connection to a CouchDB database.  This type is
 -- encapsulated by 'CouchMonad'.
 data CouchConn = CouchConn 
-  { ccConn :: IORef Connection 
+  { ccConn :: IORef (HandleStream String) 
   , ccURI :: URI
   , ccHostname :: String
   , ccPort :: Int
@@ -60,7 +59,7 @@
                         }
          ,conn )
 
-getConn :: CouchMonad Connection
+getConn :: CouchMonad (HandleStream String)
 getConn = CouchMonad $ \conn -> do
   r <- readIORef (ccConn conn)
   return (r,conn)
@@ -68,7 +67,7 @@
 reopenConnection :: CouchMonad ()
 reopenConnection = CouchMonad $ \conn -> do
   c <- liftIO $ readIORef (ccConn conn) >>= close
-  connection <- liftIO $ openTCPPort (ccHostname conn) (ccPort conn)
+  connection <- liftIO $ openTCPConnection (ccHostname conn) (ccPort conn)
   writeIORef (ccConn conn) connection
   return ((), conn)
 
@@ -86,7 +85,7 @@
        -> RequestMethod 
        -> [Header] 
        -> String -- ^body of the request
-       -> CouchMonad Response
+       -> CouchMonad (Response String)
 request path query method headers body = do
   url <- makeURL path query
   let allHeaders = (makeHeaders (length body)) ++ headers 
@@ -111,7 +110,7 @@
 runCouchDB hostname port (CouchMonad m) = do
   let uriAuth = URIAuth "" hostname (':':(show port))
   let baseURI = URI "http:" (Just uriAuth) "" "" ""
-  c <- openTCPPort hostname port
+  c <- openTCPConnection hostname port
   conn <- newIORef c
   (a,_) <- m (CouchConn conn baseURI hostname port)
            `finally` (do c <- readIORef conn
diff --git a/src/Database/CouchDB/JSON.hs b/src/Database/CouchDB/JSON.hs
--- a/src/Database/CouchDB/JSON.hs
+++ b/src/Database/CouchDB/JSON.hs
@@ -17,7 +17,7 @@
 jsonString _ = fail "expected a string"
 
 jsonInt :: (Integral n) => JSValue -> Result n
-jsonInt (JSRational r) = case (numerator r, denominator r) of
+jsonInt (JSRational _ r) = case (numerator r, denominator r) of
   (n,1) -> return (fromIntegral n)
   otherwise -> fail "expected an integer; got a rational"
 jsonInt _ = fail "expected an integer"
