diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,14 +1,12 @@
 # Changelog
 
-## next release
-
-### Breaking changes
+## 1.4.0.0
 
-### Non-breaking changes
+* `io-sim-1.4.0.0`.
 
 ## 1.3.0.0
 
-- `io-sim-1.3.0.0`.
+* `io-sim-1.3.0.0`.
 * Support `ghc-9.8`.
 
 ## 1.2.0.0
diff --git a/NOTICE b/NOTICE
--- a/NOTICE
+++ b/NOTICE
@@ -1,4 +1,4 @@
-Copyright 2019-2023 Input Output Global Inc (IOG)
+Copyright 2019-2024 Input Output Global Inc (IOG)
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
diff --git a/src/Control/Concurrent/Class/MonadSTM/Strict.hs b/src/Control/Concurrent/Class/MonadSTM/Strict.hs
--- a/src/Control/Concurrent/Class/MonadSTM/Strict.hs
+++ b/src/Control/Concurrent/Class/MonadSTM/Strict.hs
@@ -1,19 +1,15 @@
 -- | This module corresponds to `Control.Concurrent.STM` in "stm" package
 --
-module Control.Concurrent.Class.MonadSTM.Strict
-  (module STM)
-  where
+module Control.Concurrent.Class.MonadSTM.Strict (module STM) where
 
-import           Control.Monad.Class.MonadSTM                     as STM hiding ( traceTVar, traceTVarIO,
-                                                                                  traceTMVar, traceTMVarIO,
-                                                                                  traceTQueue, traceTQueueIO,
-                                                                                  traceTBQueue, traceTBQueueIO
-                                                                                )
-import           Control.Concurrent.Class.MonadSTM.Strict.TVar    as STM
-import           Control.Concurrent.Class.MonadSTM.Strict.TMVar   as STM
-import           Control.Concurrent.Class.MonadSTM.Strict.TChan   as STM
-import           Control.Concurrent.Class.MonadSTM.Strict.TQueue  as STM
-import           Control.Concurrent.Class.MonadSTM.Strict.TBQueue as STM
-import           Control.Concurrent.Class.MonadSTM.Strict.TArray  as STM
+import Control.Concurrent.Class.MonadSTM.Strict.TArray as STM
+import Control.Concurrent.Class.MonadSTM.Strict.TBQueue as STM
+import Control.Concurrent.Class.MonadSTM.Strict.TChan as STM
+import Control.Concurrent.Class.MonadSTM.Strict.TMVar as STM
+import Control.Concurrent.Class.MonadSTM.Strict.TQueue as STM
+import Control.Concurrent.Class.MonadSTM.Strict.TVar as STM
+import Control.Monad.Class.MonadSTM as STM hiding (traceTBQueue, traceTBQueueIO,
+           traceTMVar, traceTMVarIO, traceTQueue, traceTQueueIO, traceTVar,
+           traceTVarIO)
 
 
diff --git a/src/Control/Concurrent/Class/MonadSTM/Strict/TArray.hs b/src/Control/Concurrent/Class/MonadSTM/Strict/TArray.hs
--- a/src/Control/Concurrent/Class/MonadSTM/Strict/TArray.hs
+++ b/src/Control/Concurrent/Class/MonadSTM/Strict/TArray.hs
@@ -16,9 +16,9 @@
   ) where
 
 
-import qualified Control.Concurrent.Class.MonadSTM.TArray as Lazy
+import Control.Concurrent.Class.MonadSTM.TArray qualified as Lazy
 
-import           Data.Array.Base (MArray (..))
+import Data.Array.Base (MArray (..))
 
 
 type LazyTArray  m = Lazy.TArray m
diff --git a/src/Control/Concurrent/Class/MonadSTM/Strict/TBQueue.hs b/src/Control/Concurrent/Class/MonadSTM/Strict/TBQueue.hs
--- a/src/Control/Concurrent/Class/MonadSTM/Strict/TBQueue.hs
+++ b/src/Control/Concurrent/Class/MonadSTM/Strict/TBQueue.hs
@@ -33,10 +33,10 @@
   ) where
 
 
-import qualified Control.Concurrent.Class.MonadSTM.TBQueue as Lazy
-import           Control.Monad.Class.MonadSTM hiding (traceTBQueue, traceTBQueueIO)
+import Control.Concurrent.Class.MonadSTM.TBQueue qualified as Lazy
+import Control.Monad.Class.MonadSTM hiding (traceTBQueue, traceTBQueueIO)
 
-import           Numeric.Natural (Natural)
+import Numeric.Natural (Natural)
 
 
 type LazyTBQueue m = Lazy.TBQueue m
diff --git a/src/Control/Concurrent/Class/MonadSTM/Strict/TChan.hs b/src/Control/Concurrent/Class/MonadSTM/Strict/TChan.hs
--- a/src/Control/Concurrent/Class/MonadSTM/Strict/TChan.hs
+++ b/src/Control/Concurrent/Class/MonadSTM/Strict/TChan.hs
@@ -26,8 +26,8 @@
   ) where
 
 
-import qualified Control.Concurrent.Class.MonadSTM.TChan as Lazy
-import           Control.Monad.Class.MonadSTM
+import Control.Concurrent.Class.MonadSTM.TChan qualified as Lazy
+import Control.Monad.Class.MonadSTM
 
 
 type LazyTChan   m = Lazy.TChan m
diff --git a/src/Control/Concurrent/Class/MonadSTM/Strict/TMVar.hs b/src/Control/Concurrent/Class/MonadSTM/Strict/TMVar.hs
--- a/src/Control/Concurrent/Class/MonadSTM/Strict/TMVar.hs
+++ b/src/Control/Concurrent/Class/MonadSTM/Strict/TMVar.hs
@@ -33,8 +33,8 @@
   ) where
 
 
-import qualified Control.Concurrent.Class.MonadSTM.TMVar as Lazy
-import           Control.Monad.Class.MonadSTM hiding (traceTMVar, traceTMVarIO)
+import Control.Concurrent.Class.MonadSTM.TMVar qualified as Lazy
+import Control.Monad.Class.MonadSTM hiding (traceTMVar, traceTMVarIO)
 
 
 type LazyTMVar   m = Lazy.TMVar m
diff --git a/src/Control/Concurrent/Class/MonadSTM/Strict/TQueue.hs b/src/Control/Concurrent/Class/MonadSTM/Strict/TQueue.hs
--- a/src/Control/Concurrent/Class/MonadSTM/Strict/TQueue.hs
+++ b/src/Control/Concurrent/Class/MonadSTM/Strict/TQueue.hs
@@ -32,8 +32,8 @@
   ) where
 
 
-import qualified Control.Concurrent.Class.MonadSTM.TQueue as Lazy
-import           Control.Monad.Class.MonadSTM hiding (traceTQueue, traceTQueueIO)
+import Control.Concurrent.Class.MonadSTM.TQueue qualified as Lazy
+import Control.Monad.Class.MonadSTM hiding (traceTQueue, traceTQueueIO)
 
 
 type LazyTQueue  m = Lazy.TQueue m
diff --git a/src/Control/Concurrent/Class/MonadSTM/Strict/TVar.hs b/src/Control/Concurrent/Class/MonadSTM/Strict/TVar.hs
--- a/src/Control/Concurrent/Class/MonadSTM/Strict/TVar.hs
+++ b/src/Control/Concurrent/Class/MonadSTM/Strict/TVar.hs
@@ -1,6 +1,7 @@
-{-# LANGUAGE BangPatterns  #-}
-{-# LANGUAGE TypeFamilies  #-}
-{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE BangPatterns   #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE TypeFamilies   #-}
+{-# LANGUAGE TypeOperators  #-}
 
 -- | This module corresponds to `Control.Concurrent.STM.TVar` in "stm" package
 --
@@ -28,8 +29,8 @@
   , traceTVarIO
   ) where
 
-import qualified Control.Concurrent.Class.MonadSTM.TVar as Lazy
-import           Control.Monad.Class.MonadSTM hiding (traceTVar, traceTVarIO)
+import Control.Concurrent.Class.MonadSTM.TVar qualified as Lazy
+import Control.Monad.Class.MonadSTM hiding (traceTVar, traceTVarIO)
 
 type LazyTVar m = Lazy.TVar m
 
@@ -56,6 +57,11 @@
             -> m ()
 traceTVarIO StrictTVar {tvar} = Lazy.traceTVarIO tvar
 
+-- | Cast the monad if both use the same representation of `TVar`s.
+--
+-- This function is useful for monad transformers stacks if the `TVar` is used
+-- in different monad stacks.
+--
 castStrictTVar :: LazyTVar m ~ LazyTVar n
                => StrictTVar m a -> StrictTVar n a
 castStrictTVar StrictTVar {tvar} = StrictTVar {tvar}
diff --git a/strict-stm.cabal b/strict-stm.cabal
--- a/strict-stm.cabal
+++ b/strict-stm.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                strict-stm
-version:             1.3.0.0
+version:             1.4.0.0
 synopsis:            Strict STM interface polymorphic over stm implementation.
 description:
   Strict STM interface provided on top of
@@ -9,7 +9,7 @@
   & [io-sim](https://hackage.haskell.org/package/io-sim).
 license:             Apache-2.0
 license-files:       LICENSE NOTICE
-copyright:           2019-2023 Input Output Global Inc (IOG)
+copyright:           2019-2024 Input Output Global Inc (IOG)
 author:              Alexander Vieth, Duncan Coutts, Marcin Szamotulski, Thomas Winant
 maintainer:          Duncan Coutts dunca@well-typed.com, Marcin Szamotulski coot@coot.me
 category:            Concurrency
@@ -40,19 +40,12 @@
                        Control.Concurrent.Class.MonadSTM.Strict.TVar
   reexported-modules:  Control.Concurrent.Class.MonadSTM.TSem as Control.Concurrent.Class.MonadSTM.Strict.TSem
   default-language:    Haskell2010
-  default-extensions:  BangPatterns,
-                       CPP,
-                       ExplicitNamespaces,
-                       FlexibleContexts,
-                       FlexibleInstances,
-                       GADTs,
-                       NamedFieldPuns,
-                       TypeOperators
-  build-depends:       base        >= 4.9 && <4.20,
+  default-extensions:  ImportQualifiedPost
+  build-depends:       base        >=4.9 && <4.20,
                        array,
-                       stm         >= 2.5 && <2.6,
+                       stm         >=2.5 && <2.6,
 
-                       io-classes ^>= 1.3
+                       io-classes ^>=1.4
   ghc-options:         -Wall
                        -Wno-unticked-promoted-constructors
                        -Wcompat
