diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+0.16
+----
+
+- Compatibility with mtl-2.3, used with GHC 9.6.
+- Compatibility with resourcet-1.3
+
 0.15
 ----
 
diff --git a/servant-conduit.cabal b/servant-conduit.cabal
--- a/servant-conduit.cabal
+++ b/servant-conduit.cabal
@@ -1,6 +1,6 @@
-cabal-version:       >=1.10
+cabal-version:       2.2
 name:                servant-conduit
-version:             0.15.1
+version:             0.16
 
 synopsis:            Servant Stream support for conduit.
 category:            Servant, Web, Enumerator
@@ -10,36 +10,30 @@
 
 homepage:            http://docs.servant.dev/
 bug-reports:         http://github.com/haskell-servant/servant/issues
-license:             BSD3
+license:             BSD-3-Clause
 license-file:        LICENSE
 author:              Servant Contributors
 maintainer:          haskell-servant-maintainers@googlegroups.com
 copyright:           2018-2019 Servant Contributors
 build-type:          Simple
-tested-with:
-  GHC ==8.0.2
-   || ==8.2.2
-   || ==8.4.4
-   || ==8.6.5
-   || ==8.8.3
-   || ==8.10.1
+tested-with: GHC==8.6.5, GHC==8.8.4, GHC ==8.10.7, GHC ==9.0.2, GHC ==9.2.7, GHC ==9.4.4
 
 extra-source-files:
   CHANGELOG.md
 
 source-repository head
   type: git
-  location: http://github.com/haskell-servant/servant-conduit.git
+  location: http://github.com/haskell-servant/servant.git
 
 library
   exposed-modules:     Servant.Conduit
   build-depends:
       base          >=4.9      && <5
-    , bytestring    >=0.10.8.1 && <0.11
+    , bytestring    >=0.10.8.1 && <0.12
     , conduit       >=1.3.1    && <1.4
-    , mtl           >=2.2.2    && <2.3
-    , resourcet     >=1.2.2    && <1.3
-    , servant       >=0.15     && <0.19
+    , mtl           ^>=2.2.2   || ^>=2.3.1
+    , resourcet     >=1.2.2    && <1.4
+    , servant       >=0.20     && <0.21
     , unliftio-core >=0.1.2.0  && <0.3
   hs-source-dirs:      src
   default-language:    Haskell2010
@@ -58,10 +52,10 @@
     , conduit
     , http-media
     , resourcet
-    , servant
+    , servant        >=0.20     && <0.21
     , servant-conduit
-    , servant-server >=0.15     && <0.19
-    , servant-client >=0.15     && <0.19
+    , servant-server >=0.20     && <0.21
+    , servant-client >=0.20     && <0.21
     , wai            >=3.2.1.2  && <3.3
     , warp           >=3.2.25   && <3.4
     , http-client
diff --git a/src/Servant/Conduit.hs b/src/Servant/Conduit.hs
--- a/src/Servant/Conduit.hs
+++ b/src/Servant/Conduit.hs
@@ -57,7 +57,7 @@
     toSourceIO = conduitToSourceIO
 
 instance (MonadIO m, r ~ ()) => FromSourceIO o (ConduitT i o m r) where
-    fromSourceIO src =
+    fromSourceIO src = return $
         ConduitT $ \con ->
         PipeM $ liftIO $ S.unSourceT src $ \step ->
         loop con step
@@ -69,4 +69,4 @@
         loop  con (S.Effect ms) = ms >>= loop con
         loop  con (S.Yield x s) = return (HaveOutput (PipeM (liftIO $ loop con s)) x)
 
-    {-# SPECIALIZE INLINE fromSourceIO :: SourceIO o -> ConduitT i o IO () #-}
+    {-# SPECIALIZE INLINE fromSourceIO :: SourceIO o -> IO (ConduitT i o IO ()) #-}
