diff --git a/Network/PayPal/ButtonManager.hs b/Network/PayPal/ButtonManager.hs
--- a/Network/PayPal/ButtonManager.hs
+++ b/Network/PayPal/ButtonManager.hs
@@ -73,8 +73,7 @@
 import qualified Data.Text.Encoding as T
 import Data.Time.Format
 import Debug.Trace
-import Network.HTTP.Enumerator
-import Web.Encodings (decodeUrlPairs)
+import Network.HTTP.Conduit
 import Numeric
 
 
diff --git a/Network/PayPal/NVP.hs b/Network/PayPal/NVP.hs
--- a/Network/PayPal/NVP.hs
+++ b/Network/PayPal/NVP.hs
@@ -20,13 +20,12 @@
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Char8 as C
 import qualified Data.ByteString.Lazy as L
+import Data.Maybe
 import Data.Monoid
-import Network.HTTP.Enumerator as HTTP
+import Network.HTTP.Conduit as HTTP
 import Network.HTTP.Types as HTTP
-import Web.Encodings (decodeUrlPairs)
 import System.IO.Unsafe
-import Data.Enumerator (Iteratee (..), run_)
-import Data.Enumerator.List (consume)
+import Data.Conduit
 import qualified Network.Wai as W
 
 
@@ -54,14 +53,14 @@
           Service
        -> Credentials
        -> req
-       -> m (Either Response (PayPal.Status (PayPalResponse req)))
+       -> m (Either (Response L.ByteString) (PayPal.Status (PayPalResponse req)))
 submit service cred req = do
     -- Re-using connections (i.e. not creating a new manager each time) fails with
     -- an exception for some reason:
     --
     -- too few bytes. Failed reading at byte position 1
-    mgr <- liftIO newManager
-    run_ $ httpRedirect (prepareRequest service cred req) (processResponse req) mgr
+    res <- liftIO $ withManager $ httpLbs (prepareRequest service cred req)
+    processResponse req res
 
 -- | Construct an HTTP request for the specified PayPal request.
 prepareRequest :: (Monad m, PayPalRequest req) =>
@@ -78,18 +77,17 @@
          ("VERSION", version),
          ("SIGNATURE", sig)] ++ toVariables req
 
-processResponse :: (PayPalRequest req, Monad m) =>
+processResponse :: (PayPalRequest req, MonadIO m) =>
                    req
-                -> HTTP.Status
-                -> ResponseHeaders
-                -> Iteratee B.ByteString m (Either Response (PayPal.Status (PayPalResponse req)))
-processResponse req (Status statusCode _) headers = do
-    body <- L.fromChunks <$> consume
+                -> Response L.ByteString
+                -> m (Either (Response L.ByteString) (PayPal.Status (PayPalResponse req)))
+processResponse req res = do
+    let Status statusCode _ = responseStatus res
+        body = responseBody res
     return $ case statusCode of
         200 -> Right . decodeResponseChecking
-                     . map (textify *** textify)
-                     . decodeUrlPairs $ body
-        _   -> Left $ Response statusCode headers body
-  where
-    textify = mconcat . L.toChunks
+                     . map (second (fromMaybe mempty))
+                     . parseQuery
+                     . (mconcat . L.toChunks) $ body
+        _   -> Left res
 
diff --git a/Network/PayPal/Types.hs b/Network/PayPal/Types.hs
--- a/Network/PayPal/Types.hs
+++ b/Network/PayPal/Types.hs
@@ -10,8 +10,7 @@
         FromText(..),
         ToVariables(..),
         FromVariables(..),
-        PayPalRequest(decodeResponse),
-        PayPalResponse(..),
+        PayPalRequest(decodeResponse, type PayPalResponse),
         -- * Helpers
         decodeResponseChecking,
         toTextTime,
diff --git a/example.hs b/example.hs
--- a/example.hs
+++ b/example.hs
@@ -7,7 +7,7 @@
 import Data.Time.Calendar
 import Data.Time.LocalTime
 import Control.Monad
-import Network.HTTP.Enumerator (newManager)
+import Network.HTTP.Conduit
 
 me = Credentials {
         crUsername = "your_username_here",
diff --git a/paypal-api.cabal b/paypal-api.cabal
--- a/paypal-api.cabal
+++ b/paypal-api.cabal
@@ -1,5 +1,5 @@
 name: paypal-api
-version: 0.1
+version: 0.2
 cabal-version: >=1.6
 build-type: Simple
 license: BSD3
@@ -7,7 +7,7 @@
 copyright: Copyright (C) 2011 by Stephen Blackheath
 maintainer: http://blacksapphire.com/antispam/
 stability: alpha
-homepage: http://code.haskell.org/paypal-api/
+homepage: http://projects.haskell.org/paypal-api/
 package-url:
 bug-reports:
 synopsis: PayPal API, currently supporting "ButtonManager"
@@ -37,10 +37,13 @@
              beyond pathetic.
 category: Network
 author: Stephen Blackheath
-
 Extra-Source-Files:
   example.hs
 
+source-repository head
+    type:     darcs
+    location: http://code.haskell.org/paypal-api/
+
 library
   exposed-modules:
       Network.PayPal.ButtonManager
@@ -48,10 +51,19 @@
       Network.PayPal.Types
   exposed: True
   buildable: True
-  build-depends: base >=4 && <5, bytestring -any, containers -any,
-               enumerator -any, failure -any, http-enumerator -any,
-               http-types -any, monads-fd -any, old-locale -any, text -any,
-               time -any, wai -any, web-encodings -any
+  build-depends:
+      base >=4 && <5,
+      bytestring >= 0.9.1.4 && < 0.10,
+      containers >= 0.2,
+      conduit == 0.5.*,
+      failure >= 0.1,
+      http-conduit == 1.5.*,
+      http-types >= 0.6.0 && < 0.8.0,
+      mtl -any,
+      old-locale -any,
+      text -any,
+      time -any,
+      wai == 1.3.*
   ghc-options:
       -fwarn-unused-binds
       -fwarn-incomplete-patterns
