diff --git a/HTTP.cabal b/HTTP.cabal
--- a/HTTP.cabal
+++ b/HTTP.cabal
@@ -1,5 +1,5 @@
 Name:               HTTP
-Version:            3001.1.4
+Version:            3001.1.5
 Cabal-Version:      >= 1.2
 Build-type:         Simple
 License:            BSD3
@@ -37,6 +37,7 @@
                  Network.HTTP.MD5,
                  Network.HTTP.MD5Aux
   GHC-options: -fwarn-missing-signatures
+  Extensions: DeriveDataTypeable
   Build-depends: network, parsec
 
   if flag(old-base)
diff --git a/Makefile b/Makefile
deleted file mode 100644
--- a/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-HADDOCK = haddock
-
-TODAY = $(shell date +%Y%m%d)
-DIST_NAME = http-$(TODAY)
-
-HADDOCK_FILES = Network/HTTP.hs Network/Browser.hs 
-
-.PHONY: all configure build install dist haddock clean
-
-default all: configure build
-
-configure:
-	./Setup.lhs configure
-
-build:
-	./Setup.lhs build
-
-install:
-	./Setup.lhs install
-
-dist:
-	darcs dist --dist-name=$(DIST_NAME)
-
-haddock: $(HADDOCK_FILES)
-	mkdir -p haddock
-	$(HADDOCK) -o haddock -h $^
-
-clean:
-	-./Setup.lhs clean
-	-rm -rf haddock
-	-rm -rf dist
-	$(MAKE) -C test clean
-
-setup: Setup.lhs
-	ghc --make -package Cabal -o setup Setup.lhs
diff --git a/Network/HTTP.hs b/Network/HTTP.hs
--- a/Network/HTTP.hs
+++ b/Network/HTTP.hs
@@ -153,7 +153,7 @@
 import Text.Read.Lex (readDecP)
 import Text.ParserCombinators.ReadP
    ( ReadP, readP_to_S, char, (<++), look, munch )
-
+import Data.Typeable
 
 -- Turn on to enable HTTP traffic logging
 debug :: Bool
@@ -256,7 +256,7 @@
              , rqMethod    :: RequestMethod             
              , rqHeaders   :: [Header]
              , rqBody      :: String
-             }
+             } deriving (Typeable)
 
 
 
@@ -291,7 +291,7 @@
              , rspReason   :: String
              , rspHeaders  :: [Header]
              , rspBody     :: String
-             }
+             } deriving (Typeable)
                    
 -- This is an invalid representation of a received response, 
 -- since we have made the assumption that all responses are HTTP/1.1
@@ -530,7 +530,7 @@
                     do { rslt <- case tc of
                           Nothing -> 
                               case cl of
-                                  Just x  -> linearTransfer conn (read x :: Int)
+                                  Just x  -> linearTransferStrLen conn x
                                   Nothing -> hopefulTransfer conn ""
                           Just x  -> 
                               case map toLower (trim x) of
@@ -586,7 +586,7 @@
        rslt <- case tc of
                   Nothing ->
                       case cl of
-                          Just x  -> linearTransfer conn (read x :: Int)
+                          Just x  -> linearTransferStrLen conn x
                           Nothing -> return (Right ([], "")) -- hopefulTransfer ""
                   Just x  ->
                       case map toLower (trim x) of
@@ -606,6 +606,12 @@
 
 -- The following functions were in the where clause of sendHTTP, they have
 -- been moved to global scope so other functions can access them.		       
+
+linearTransferStrLen :: Stream s => s -> String -> IO (Result ([Header],String))
+linearTransferStrLen conn ns =
+   case reads ns of
+      [(n,"")] -> linearTransfer conn n
+      _ -> return $ Left $ ErrorParse $ "Content-Length header contains not a number: " ++ show ns
 
 -- | Used when we know exactly how many bytes to expect.
 linearTransfer :: Stream s => s -> Int -> IO (Result ([Header],String))
diff --git a/README b/README
deleted file mode 100644
--- a/README
+++ /dev/null
@@ -1,25 +0,0 @@
-DESCRIPTION
-
-This is the Haskell HTTP and Browser module package. It was originally
-written by Warrick Gray and the original version is still available
-from: http://homepages.paradise.net.nz/warrickg/haskell/http/
-
-REQUIREMENTS
-
-* A Haskell implementation such as GHC (http://www.haskell.org/ghc/)
-or Hugs (http://www.haskell.org/hugs/) with support for Cabal.
-
-INSTALLATION
-
-
-* Configure:
-
-$ runhaskell Setup.lhs configure
-
-* Compile:
-
-$ runhaskell Setup.lhs build
-
-* Install (as root):
-
-# runhaskell Setup.lhs install
diff --git a/test/Makefile b/test/Makefile
deleted file mode 100644
--- a/test/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-GHC = ghc
-GHCFLAGS = -O2 -package HTTP
-
-TEST_PROGS = get
-
-.SUFFIXES: .hs .hi .o
-
-.PHONY: all clean
-
-default all: $(TEST_PROGS)
-
-%: %.hs
-	$(GHC) $(GHCFLAGS) --make -o $@ $<
-
-clean:
-	-rm -f *.hi *.o $(TEST_PROGS)
diff --git a/test/get.hs b/test/get.hs
deleted file mode 100644
--- a/test/get.hs
+++ /dev/null
@@ -1,49 +0,0 @@
--- A simple test program which takes a url on the commandline
--- and outputs the contents to stdout.
-
--- ghc --make -package HTTP get.hs -o get
-
-import Data.Char (intToDigit)
-import Network.HTTP
-import Network.URI
-import System.Environment (getArgs)
-import System.Exit (exitFailure)
-import System.IO (hPutStrLn, stderr)
-
-main = 
-    do
-    args <- getArgs
-    case args of 
-	[addr] -> case parseURI addr of
-		       Nothing -> err "Could not parse URI"
-		       Just uri -> do
-				   cont <- get uri
-			           putStr cont
-	_ -> err "Usage: get <url>"
-
-err :: String -> IO a
-err msg = do 
-	  hPutStrLn stderr msg
-	  exitFailure
-
-get :: URI -> IO String
-get uri =
-    do
-    eresp <- simpleHTTP (request uri)
-    resp <- handleE (err . show) eresp
-    case rspCode resp of
-                      (2,0,0) -> return (rspBody resp)
-                      _ -> err (httpError resp)
-    where
-    showRspCode (a,b,c) = map intToDigit [a,b,c]
-    httpError resp = showRspCode (rspCode resp) ++ " " ++ rspReason resp
-
-request :: URI -> Request
-request uri = Request{ rqURI = uri,
-                       rqMethod = GET,
-                       rqHeaders = [],
-                       rqBody = "" }
-
-handleE :: Monad m => (ConnError -> m a) -> Either ConnError a -> m a
-handleE h (Left e) = h e
-handleE _ (Right v) = return v
