diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for quickcheck-lockstep
 
+## 0.4.1 -- 2024-03-20
+
+* PATCH: fix compilation failures when using `mtl ^>=2.3`
+
 ## 0.4.0 -- 2024-02-17
 
 * BREAKING: Counter-examples now produce valid code. To facilitate this,
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+# Library for lockstep-style testing with `quickcheck-dynamic`
+
+See https://well-typed.com/blog/2022/09/lockstep-with-quickcheck-dynamic/
+for a tutorial.
diff --git a/quickcheck-lockstep.cabal b/quickcheck-lockstep.cabal
--- a/quickcheck-lockstep.cabal
+++ b/quickcheck-lockstep.cabal
@@ -1,10 +1,11 @@
 cabal-version:      2.4
 name:               quickcheck-lockstep
-version:            0.4.0
+version:            0.4.1
 license:            BSD-3-Clause
 license-file:       LICENSE
 author:             Edsko de Vries
 maintainer:         edsko@well-typed.com, joris@well-typed.com
+extra-doc-files:    README.md
 extra-source-files: CHANGELOG.md
 category:           Testing
 synopsis:           Library for lockstep-style testing with 'quickcheck-dynamic'
diff --git a/src/Test/QuickCheck/StateModel/Lockstep/Op/SumProd.hs b/src/Test/QuickCheck/StateModel/Lockstep/Op/SumProd.hs
--- a/src/Test/QuickCheck/StateModel/Lockstep/Op/SumProd.hs
+++ b/src/Test/QuickCheck/StateModel/Lockstep/Op/SumProd.hs
@@ -1,12 +1,8 @@
-{-# LANGUAGE CPP #-}
-
 module Test.QuickCheck.StateModel.Lockstep.Op.SumProd (Op(..), intOpId) where
 
-#if __GLASGOW_HASKELL__ >= 906
 import Control.Monad ((<=<))
-#endif
 import Control.Monad.Reader (ReaderT)
-import Control.Monad.State
+import Control.Monad.State (StateT)
 import GHC.Show (appPrec)
 
 import Test.QuickCheck.StateModel.Lockstep.Op
diff --git a/src/Test/QuickCheck/StateModel/Lockstep/Run.hs b/src/Test/QuickCheck/StateModel/Lockstep/Run.hs
--- a/src/Test/QuickCheck/StateModel/Lockstep/Run.hs
+++ b/src/Test/QuickCheck/StateModel/Lockstep/Run.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE CPP #-}
-
 -- | Run lockstep tests
 --
 -- Intended for qualified import.
@@ -17,11 +15,7 @@
 import Prelude hiding (init)
 
 import Control.Exception
-#if __GLASGOW_HASKELL__ >= 906
 import Control.Monad (void)
-#else
-import Control.Monad.Reader
-#endif
 import Data.Set (Set)
 import Data.Set qualified as Set
 import Data.Typeable
diff --git a/test/Test/MockFS.hs b/test/Test/MockFS.hs
--- a/test/Test/MockFS.hs
+++ b/test/Test/MockFS.hs
@@ -16,8 +16,8 @@
 import Prelude hiding (init)
 
 import Control.Exception (catch, throwIO)
-import Control.Monad
-import Control.Monad.Reader
+import Control.Monad (replicateM, (<=<))
+import Control.Monad.Reader (ReaderT (..))
 import Data.Bifunctor
 import Data.Set (Set)
 import Data.Set qualified as Set
