diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,22 @@
 All notable changes to this project will be documented in this file.
 This project adheres to the [Package Versioning Policy](https://wiki.haskell.org/Package_versioning_policy).
 
+## [3001.5.2.0]
+- Add support for containers 0.8.x.
+- Add support for time 0.15 and 0.16.
+- Depend on 'text' only when using xhtml >= 3000.3.
+- Remove noncanonical definitions to appease the -Wnoncanonical-monad-instances
+  warning. This warning exists because a future GHC release may treat
+  noncanonical definitions as errors. See also:
+  https://gitlab.haskell.org/ghc/ghc/-/wikis/proposal/monad-of-no-return
+
+## [3001.5.1.0]
+- Add support for GHC 9.12.x.
+- Add support for xhtml 3000.5.x.
+- Add support for containers 0.7.x.
+- Add support for bytestring 0.12.x.
+- Add support for mtl 2.3.x.
+
 ## [3001.5.0.1]
 - Allow building against bytestring version 0.11.x.
 - Update our Cabal file to "cabal-version: >= 1.10" so that we can legally use
diff --git a/cgi.cabal b/cgi.cabal
--- a/cgi.cabal
+++ b/cgi.cabal
@@ -1,5 +1,5 @@
 name:               cgi
-version:            3001.5.1.0
+version:            3001.5.2.0
 synopsis:           A library for writing CGI programs
 description:        This is a Haskell library for writing CGI programs.
 license:            BSD3
@@ -9,8 +9,8 @@
 author:             Bjorn Bringert
 maintainer:         John Chee <cheecheeo@gmail.com>, Peter Simons <simons@cryp.to>
 tested-with:        GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4,
-                    GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.8, GHC == 9.4.8, GHC == 9.6.6,
-                    GHC == 9.8.4, GHC == 9.10.1, GHC == 9.12.1
+                    GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.8, GHC == 9.4.8, GHC == 9.6.7,
+                    GHC == 9.8.4, GHC == 9.10.3, GHC == 9.12.4, GHC == 9.14.1
 category:           Network
 homepage:           https://github.com/cheecheeo/haskell-cgi
 bug-reports:        https://github.com/cheecheeo/haskell-cgi/issues
@@ -23,6 +23,10 @@
   type:     git
   location: https://github.com/cheecheeo/haskell-cgi.git
 
+flag xhtml-library-needs-text
+  description: xhtml 3000.3.x introduced a dependency on text
+  manual: False
+
 flag install-examples
   default:     False
   description: compile (and install) the example programs
@@ -36,15 +40,17 @@
   hs-source-dirs:   src
   build-depends:    base        >= 4.9 && < 5
                   , bytestring  < 0.13
-                  , containers  < 0.8
+                  , containers  < 0.9
                   , exceptions  == 0.10.*
                   , mtl         > 2.2.0.1 && < 2.4
                   , multipart   >= 0.1.2 && < 0.3
                   , network-uri == 2.6.*
                   , parsec      >= 2.0 && < 3.2
-                  , text        < 2.2
-                  , time        >= 1.5 && < 1.15
-                  , xhtml       >= 3000.0.0 && < 3000.5
+                  , time        >= 1.5 && < 1.17
+  if flag(xhtml-library-needs-text)
+    build-depends:  xhtml       >= 3000.3 && < 3000.5, text
+  else
+    build-depends:  xhtml       >= 3000 && < 3000.3
   other-extensions: MultiParamTypeClasses
   default-language: Haskell2010
 
@@ -53,7 +59,7 @@
   hs-source-dirs: examples
   default-language: Haskell2010
 
-  if flag(install-examples)
+  if flag(install-examples) && !flag(xhtml-library-needs-text)
     build-depends: base, cgi, xhtml
   else
     buildable: False
@@ -113,7 +119,7 @@
   hs-source-dirs: examples
   default-language: Haskell2010
 
-  if flag(install-examples)
-    build-depends: base, bytestring, cgi, xhtml
+  if flag(install-examples) && !flag(xhtml-library-needs-text)
+    build-depends: base, bytestring, cgi
   else
     buildable: False
diff --git a/src/Network/CGI/Monad.hs b/src/Network/CGI/Monad.hs
--- a/src/Network/CGI/Monad.hs
+++ b/src/Network/CGI/Monad.hs
@@ -59,7 +59,6 @@
 
 instance Monad m => Monad (CGIT m) where
     c >>= f = CGIT (unCGIT c >>= unCGIT . f)
-    return = CGIT . return
 
 instance MonadFail m => MonadFail (CGIT m) where
     fail = CGIT . fail
