diff --git a/Network/Wai/Frontend/MonadCGI.hs b/Network/Wai/Frontend/MonadCGI.hs
--- a/Network/Wai/Frontend/MonadCGI.hs
+++ b/Network/Wai/Frontend/MonadCGI.hs
@@ -4,10 +4,14 @@
     ) where
 
 import Network.Wai
-import Network.Wai.Source
 import Network.CGI.Monad
 import Network.CGI.Protocol
+import Network.HTTP.Types (Status (..))
+import Control.Monad.IO.Class (liftIO)
+import Data.CaseInsensitive (original)
 
+import Data.Conduit.Lazy (lazyConsume)
+
 import qualified Data.Map as Map
 import qualified Data.ByteString.Lazy as BS
 import qualified Data.ByteString.Char8 as S8
@@ -29,7 +33,7 @@
                 -> CGIT m CGIResult
                 -> Application
 cgiToAppGeneric toIO cgi env = do
-    input <- toLBS $ requestBody env
+    input <- fmap BS.fromChunks $ lazyConsume $ requestBody env
     let vars = map (first fixVarName . go) (requestHeaders env)
                ++ getCgiVars env
         (inputs, body') = decodeInput vars input
@@ -38,7 +42,7 @@
                 , cgiInputs = inputs
                 , cgiRequestBody = body'
                 }
-    (headers'', output') <- toIO $ runCGIT cgi req
+    (headers'', output') <- liftIO $ toIO $ runCGIT cgi req
     let output = case output' of
                     CGIOutput bs -> bs
                     CGINothing -> BS.empty
@@ -47,9 +51,9 @@
     let status' = case lookup (fromString "Status") headers' of
                     Nothing -> 200
                     Just s -> safeRead 200 $ S8.unpack s
-    return $ Response (Status status' S8.empty) headers' $ ResponseLBS output
+    return $ responseLBS (Status status' S8.empty) headers' output
   where
-    go (x, y) = (S8.unpack $ ciOriginal x, S8.unpack y)
+    go (x, y) = (S8.unpack $ original x, S8.unpack y)
 
 fixVarName :: String -> String
 fixVarName = ((++) $ "HTTP_") . map fixVarNameChar
@@ -60,9 +64,9 @@
 
 getCgiVars :: Request -> [(String, String)]
 getCgiVars e =
-    [ ("PATH_INFO", S8.unpack $ pathInfo e)
+    [ ("PATH_INFO", S8.unpack $ rawPathInfo e)
     , ("REQUEST_METHOD", show $ requestMethod e)
-    , ("QUERY_STRING", S8.unpack $ queryString e)
+    , ("QUERY_STRING", S8.unpack $ rawQueryString e)
     , ("SERVER_NAME", S8.unpack $ serverName e)
     , ("SERVER_PORT", show $ serverPort e)
     ]
diff --git a/wai-frontend-monadcgi.cabal b/wai-frontend-monadcgi.cabal
--- a/wai-frontend-monadcgi.cabal
+++ b/wai-frontend-monadcgi.cabal
@@ -1,20 +1,29 @@
 name:            wai-frontend-monadcgi
-version:         0.0.2
+version:         1.0.0
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
 maintainer:      Michael Snoyman <michael@snoyman.com>
-synopsis:        Allows programs written against MonadCGI to run with any WAI handler. (deprecated)
+synopsis:        Run CGI apps on WAI.
+description:     Allows programs written against MonadCGI to run with any WAI handler. This is most useful for running your existing CGI apps on Warp. For true "yo dawg"-ness, try running this through the WAI CGI backend.
 category:        Web
 stability:       stable
-cabal-version:   >= 1.2
+cabal-version:   >= 1.6
 build-type:      Simple
 
 library
-    build-depends: base >= 4 && < 5,
-                   bytestring,
-                   containers >= 0.2,
-                   cgi,
-                   wai >= 0.2 && < 0.3
+    build-depends: base              >= 4        && < 5
+                 , bytestring
+                 , containers        >= 0.2
+                 , cgi
+                 , conduit           >= 0.0.1
+                 , http-types
+                 , transformers
+                 , case-insensitive
+                 , wai               >= 1.0      && < 1.1
     exposed-modules: Network.Wai.Frontend.MonadCGI
     ghc-options:     -Wall
+
+Source-repository head
+    type:            git
+    location:        git://github.com/yesodweb/wai.git
