diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,8 @@
+2024-12-21 Ivan Perez <ivan.perez@keera.co.uk>
+        * Version bump (0.14.0) (#460).
+        * Increase upper bounds on filepath, tasty, time, hlint (#448).
+        * Remove deprecated functions related to list-t (#445).
+
 2024-10-21 Ivan Perez <ivan.perez@keera.co.uk>
         * Version bump (0.13.2) (#442).
 
diff --git a/dunai.cabal b/dunai.cabal
--- a/dunai.cabal
+++ b/dunai.cabal
@@ -30,7 +30,7 @@
 build-type:    Simple
 
 name:          dunai
-version:       0.13.2
+version:       0.14.0
 author:        Ivan Perez, Manuel Bärenz
 maintainer:    ivan.perez@keera.co.uk
 homepage:      https://github.com/ivanperez-keera/dunai
@@ -97,11 +97,7 @@
   default:     False
   manual:      True
 
-flag list-transformer
-  description: Use list-transformer instead of transformers to implement the ListT combinators
-  default: False
 
-
 library
   exposed-modules:
     Control.Monad.Trans.MSF
@@ -131,9 +127,11 @@
 
   build-depends:
       base >= 4.6 && < 5
-    , MonadRandom         >= 0.2 && < 0.7
-    , simple-affine-space >= 0.2 && < 0.3
-    , transformers-base   >= 0.4 && < 0.5
+    , MonadRandom         >= 0.2   && < 0.7
+    , list-transformer    >= 1.1.1 && < 1.2
+    , simple-affine-space >= 0.2   && < 0.3
+    , transformers        >= 0.3   && < 0.7
+    , transformers-base   >= 0.4   && < 0.5
 
   default-language:
     Haskell2010
@@ -150,17 +148,6 @@
       , transformers-compat >= 0.3 && < 0.8
       , void                >= 0.1 && < 0.8
 
-  -- The upper bound on transformers depends on whether this flag is set
-  if flag(list-transformer)
-    build-depends:
-        list-transformer >= 1.1.1 && < 1.2
-      , transformers     >= 0.3   && < 0.7
-
-    cpp-options: -DLIST_TRANSFORMER
-  else
-    build-depends:
-        transformers     >= 0.3   && < 0.6
-
 test-suite hlint
   type:
     exitcode-stdio-1.0
@@ -180,7 +167,7 @@
   else
     build-depends:
         base  >= 4   && < 5
-      , hlint >= 1.7 && < 3.7
+      , hlint >= 1.7 && < 3.8
 
 -- Verify that the code is thoroughly documented
 test-suite haddock-coverage
@@ -206,7 +193,7 @@
     build-depends:
         base           >= 4       && < 5
       , directory      >= 1.2     && < 1.4
-      , filepath       >= 1.3.0.1 && < 1.5
+      , filepath       >= 1.3.0.1 && < 1.6
       , process        >= 1.1.0.2 && < 1.7
       , regex-posix    >= 0.95    && < 0.97
 
@@ -230,7 +217,7 @@
   build-depends:
       base         >= 4   && < 5
     , transformers >= 0.3 && < 0.7
-    , tasty        >= 0.1 && < 1.5
+    , tasty        >= 0.1 && < 1.6
     , tasty-hunit  >= 0.8 && < 0.11
 
     , dunai
@@ -246,8 +233,8 @@
   build-depends:
        base      >= 4       && < 5
      , criterion >= 0.5.0.0 && < 1.7
-     , filepath  >= 1.3.0.1 && < 1.5
-     , time      >= 1.4     && < 1.13
+     , filepath  >= 1.3.0.1 && < 1.6
+     , time      >= 1.4     && < 1.16
      , dunai
 
   default-language:
diff --git a/src/Control/Monad/Trans/MSF/List.hs b/src/Control/Monad/Trans/MSF/List.hs
--- a/src/Control/Monad/Trans/MSF/List.hs
+++ b/src/Control/Monad/Trans/MSF/List.hs
@@ -1,11 +1,4 @@
 {-# LANGUAGE CPP #-}
--- The following warning id disabled so that we do not see warnings during
--- compilation caused by the intentional use of ListT.
-#if __GLASGOW_HASKELL__ < 800
-{-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
-#else
-{-# OPTIONS_GHC -Wno-deprecations #-}
-#endif
 -- |
 -- Copyright  : (c) Ivan Perez and Manuel Baerenz, 2016
 -- License    : BSD3
@@ -21,10 +14,6 @@
 -- A common use case is to be able to dynamically spawn new interactive
 -- elements in applications (e.g., a game object that splits in two, or that
 -- fires to an enemy).
---
--- WARNING: the ListT transformer is considered dangerous, and imposes
--- additional constraints on the inner monad in order for the combination of
--- the monad and the transformer to be a monad. Use at your own risk.
 module Control.Monad.Trans.MSF.List
     ( module Control.Monad.Trans.MSF.List
     , module List
@@ -36,21 +25,15 @@
 import Control.Applicative ((<$>))
 #endif
 
-#ifdef LIST_TRANSFORMER
 import           Control.Monad    (sequence)
 import           List.Transformer (ListT (ListT, next), Step (..), fold, select)
 import qualified List.Transformer as List
-#else
-import Control.Monad.Trans.List as List hiding (liftCallCC, liftCatch)
-#endif
 
 -- Internal imports
 import Data.MonadicStreamFunction.InternalCore (MSF (MSF, unMSF))
 
 -- * List monad
 
-#ifdef LIST_TRANSFORMER
-
 -- | Run an 'MSF' in the 'ListT' transformer (i.e., multiple MSFs producing
 -- each producing one output), by applying the input stream to each MSF in the
 -- list transformer and concatenating the outputs of the MSFs together.
@@ -80,35 +63,6 @@
     apply a msf = do
       (b, msf') <- unMSF msf a
       return (b, sequenceS [msf'])
-
-#else
-
-{-# DEPRECATED widthFirst "This ListT definition is deprecated. Use the list-transformer variant of this function instead." #-}
--- | Run an 'MSF' in the 'ListT' transformer (i.e., multiple MSFs producing
--- each producing one output), by applying the input stream to each MSF in the
--- list transformer and concatenating the outputs of the MSFs together.
---
--- An MSF in the ListT transformer can spawn into more than one MSF, or none,
--- so the outputs produced at each individual step are not guaranteed to all
--- have the same length.
-widthFirst :: (Functor m, Monad m) => MSF (ListT m) a b -> MSF m a [b]
-widthFirst msf = widthFirst' [msf]
-  where
-    widthFirst' msfs = MSF $ \a -> do
-      (bs, msfs') <- unzip . concat <$> mapM (runListT . flip unMSF a) msfs
-      return (bs, widthFirst' msfs')
-
-{-# DEPRECATED sequenceS "This ListT definition is deprecated. Use the list-transformer variant of this function instead." #-}
--- | Build an 'MSF' in the 'ListT' transformer by broadcasting the input stream
--- value to each MSF in a given list.
-sequenceS :: Monad m => [MSF m a b] -> MSF (ListT m) a b
-sequenceS msfs = MSF $ \a -> ListT $ sequence $ apply a <$> msfs
-  where
-    apply a msf = do
-      (b, msf') <- unMSF msf a
-      return (b, sequenceS [msf'])
-
-#endif
 
 -- | Apply an 'MSF' to every input.
 mapMSF :: Monad m => MSF m a b -> MSF m [a] [b]
