diff --git a/Network/URI/Conduit.hs b/Network/URI/Conduit.hs
--- a/Network/URI/Conduit.hs
+++ b/Network/URI/Conduit.hs
@@ -95,7 +95,7 @@
         => SchemeMap
         -> URI
         -> C.Source m ByteString
-readURI sm uri = C.SourceM
+readURI sm uri = C.PipeM
     (case Map.lookup (uriScheme uri) sm >>= schemeReader of
         Nothing -> C.monadThrow $ UnknownReadScheme uri
         Just f -> return $ f uri)
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
@@ -39,7 +39,7 @@
 fileScheme = Scheme
     { schemeNames = Set.singleton "file:"
     , schemeReader = Just $ CB.sourceFile . FP.encodeString . toFilePath
-    , schemeWriter = Just $ \uri -> C.SinkM $ do
+    , schemeWriter = Just $ \uri -> flip C.PipeM (return ()) $ do
         let fp = toFilePath uri
         liftIO $ F.createTree $ FP.directory fp
         return $ CB.sinkFile $ FP.encodeString fp
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.3.0
+Version:             0.4.0
 Synopsis:            Read and write URIs
 Homepage:            http://github.com/snoyberg/xml
 License:             BSD3
@@ -15,9 +15,9 @@
   Exposed-modules:     Network.URI.Conduit
                        Network.URI.Conduit.File
   Build-depends:       base                     >= 4          && < 5
-                     , conduit                  >= 0.3        && < 0.4
+                     , conduit                  >= 0.4        && < 0.5
                      , text                     >= 0.5        && < 1.0
-                     , transformers             >= 0.2        && < 0.3
+                     , transformers             >= 0.2        && < 0.4
                      , bytestring               >= 0.9        && < 0.10
                      , network                  >= 2.2        && < 2.4
                      , containers               >= 0.2        && < 0.5
