diff --git a/Network/URI/Conduit.hs b/Network/URI/Conduit.hs
--- a/Network/URI/Conduit.hs
+++ b/Network/URI/Conduit.hs
@@ -30,7 +30,7 @@
 
 import qualified Network.URI as N
 import Data.Text (Text, cons, isSuffixOf, pack, unpack)
-import qualified Data.Conduit as C
+import Data.Conduit hiding (Source, Conduit, Sink)
 import Data.ByteString (ByteString)
 import qualified Data.Map as Map
 import qualified Data.Set as Set
@@ -69,8 +69,8 @@
 
 data Scheme = Scheme
     { schemeNames :: Set.Set Text
-    , schemeReader :: forall m. C.MonadResource m => Maybe (URI -> C.Source m ByteString)
-    , schemeWriter :: forall m. C.MonadResource m => Maybe (URI -> C.Sink ByteString m ())
+    , schemeReader :: forall l i u m. MonadResource m => Maybe (URI -> Pipe l i ByteString u m ())
+    , schemeWriter :: forall l o r m. MonadResource m => Maybe (URI -> Pipe l ByteString o r m r)
     }
 
 type SchemeMap = Map.Map Text Scheme
@@ -91,23 +91,22 @@
   deriving (Show, Typeable)
 instance Exception URIException
 
-readURI :: C.MonadResource m
+readURI :: MonadResource m
         => SchemeMap
         -> URI
-        -> C.Source m ByteString
-readURI sm uri = C.PipeM
-    (case Map.lookup (uriScheme uri) sm >>= schemeReader of
-        Nothing -> C.monadThrow $ UnknownReadScheme uri
-        Just f -> return $ f uri)
-    (return ())
+        -> Pipe l i ByteString u m ()
+readURI sm uri =
+    case Map.lookup (uriScheme uri) sm >>= schemeReader of
+        Nothing -> lift $ monadThrow $ UnknownReadScheme uri
+        Just f -> f uri
 
-writeURI :: C.MonadResource m
+writeURI :: MonadResource m
          => SchemeMap
          -> URI
-         -> C.Sink ByteString m ()
+         -> Pipe l ByteString o r m r
 writeURI sm uri =
     case Map.lookup (uriScheme uri) sm >>= schemeWriter of
-        Nothing -> lift $ C.monadThrow $ UnknownWriteScheme uri
+        Nothing -> lift $ monadThrow $ UnknownWriteScheme uri
         Just f -> f uri
 
 toNetworkURI :: URI -> N.URI
@@ -146,9 +145,9 @@
 nullURI :: URI
 nullURI = fromNetworkURI N.nullURI
 
-copyURI :: C.MonadResource m
+copyURI :: MonadResource m
         => SchemeMap
         -> URI
         -> URI
         -> m ()
-copyURI sm src dst = readURI sm src C.$$ writeURI sm dst
+copyURI sm src dst = readURI sm src $$ writeURI sm dst
diff --git a/Network/URI/Conduit/File.hs b/Network/URI/Conduit/File.hs
--- a/Network/URI/Conduit/File.hs
+++ b/Network/URI/Conduit/File.hs
@@ -12,10 +12,10 @@
 import qualified Filesystem.Path.CurrentOS as FP
 import qualified Data.Text as T
 import qualified Data.Set as Set
-import qualified Data.Conduit as C
 import qualified Data.Conduit.Binary as CB
 import qualified Filesystem as F
 import Control.Monad.IO.Class (liftIO)
+import Control.Monad.Trans.Class (lift)
 
 -- | Converts a string, such as a command-line argument, into a URI. First
 -- tries to parse as an absolute URI. If this fails, it interprets as a
@@ -39,10 +39,10 @@
 fileScheme = Scheme
     { schemeNames = Set.singleton "file:"
     , schemeReader = Just $ CB.sourceFile . FP.encodeString . toFilePath
-    , schemeWriter = Just $ \uri -> flip C.PipeM (return ()) $ do
+    , schemeWriter = Just $ \uri -> do
         let fp = toFilePath uri
-        liftIO $ F.createTree $ FP.directory fp
-        return $ CB.sinkFile $ FP.encodeString fp
+        lift $ liftIO $ F.createTree $ FP.directory fp
+        CB.sinkFile $ FP.encodeString fp
     }
 
 toFilePath :: URI -> FP.FilePath
diff --git a/uri-conduit.cabal b/uri-conduit.cabal
--- a/uri-conduit.cabal
+++ b/uri-conduit.cabal
@@ -1,5 +1,5 @@
 Name:                uri-conduit
-Version:             0.4.0.1
+Version:             0.5.0
 Synopsis:            Read and write URIs
 Homepage:            http://github.com/snoyberg/xml
 License:             BSD3
@@ -15,7 +15,7 @@
   Exposed-modules:     Network.URI.Conduit
                        Network.URI.Conduit.File
   Build-depends:       base                     >= 4          && < 5
-                     , conduit                  >= 0.4        && < 0.5
+                     , conduit                  >= 0.5        && < 0.6
                      , text                     >= 0.5        && < 1.0
                      , transformers             >= 0.2        && < 0.4
                      , bytestring               >= 0.9        && < 0.10
