diff --git a/Control/Monad/Trans/RSS/Lazy.hs b/Control/Monad/Trans/RSS/Lazy.hs
--- a/Control/Monad/Trans/RSS/Lazy.hs
+++ b/Control/Monad/Trans/RSS/Lazy.hs
@@ -128,6 +128,8 @@
     m >>= k  = RSST $ \r s -> do
         ~(a, (s', w))  <- runRSST' m r s
         runRSST' (k a) r (s',w)
+
+instance (MonadFail m) => MonadFail (RSST r w s m) where
     fail msg = RSST $ \_ _ -> fail msg
 
 instance (MonadPlus m) => MonadPlus (RSST r w s m) where
diff --git a/Control/Monad/Trans/RSS/Strict.hs b/Control/Monad/Trans/RSS/Strict.hs
--- a/Control/Monad/Trans/RSS/Strict.hs
+++ b/Control/Monad/Trans/RSS/Strict.hs
@@ -131,6 +131,8 @@
         (a, (s', w))  <- runRSST' m r s
         runRSST' (k a) r (s',w)
     {-# INLINE (>>=) #-}
+
+instance (MonadFail m) => MonadFail (RSST r w s m) where
     fail msg = RSST $ \_ _ -> fail msg
 
 instance (MonadPlus m) => MonadPlus (RSST r w s m) where
diff --git a/stateWriter.cabal b/stateWriter.cabal
--- a/stateWriter.cabal
+++ b/stateWriter.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                stateWriter
-version:             0.2.10
+version:             0.3.0
 synopsis:            A faster variant of the RWS monad transformers.
 description:         This is a version of the RWS monad transformers that should be much faster than what's found in transformers. The writer in the strict version does not leak memory.
 license:             BSD3
@@ -14,7 +14,7 @@
 build-type:          Simple
 -- extra-source-files:
 cabal-version:       >=1.10
-Tested-With:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.1
+Tested-With:         GHC == 8.8.4, GHC == 8.10.2
 
 source-repository head
   type: git
@@ -24,7 +24,7 @@
   exposed-modules:     Control.Monad.Trans.RSS.Lazy, Control.Monad.Trans.RSS.Strict, Control.Monad.RSS.Lazy, Control.Monad.RSS.Strict, Control.Monad.RSS, Control.Monad.Trans.RSS
   ghc-options:         -Wall
   other-extensions:    FlexibleInstances, MultiParamTypeClasses
-  build-depends:       base >=4.6 && < 5, transformers >=0.3 && <0.6, mtl >=2.1 && <2.3
+  build-depends:       base >= 4.13 && < 5, transformers >=0.3 && <0.6, mtl >=2.1 && <2.3
   default-language:    Haskell2010
 
 test-suite spaceleak
diff --git a/tests/rwscompare.hs b/tests/rwscompare.hs
--- a/tests/rwscompare.hs
+++ b/tests/rwscompare.hs
@@ -5,6 +5,7 @@
 import Control.Monad.RWS
 import Test.Hspec
 import Test.QuickCheck
+import Data.Functor.Classes
 import Control.Applicative
 import Control.Monad.Free
 import Prelude
@@ -57,6 +58,14 @@
     show (AskAndStore i n) = "AskAndStore " ++ show i ++ " / " ++ show n
     show (GetAndStore i n) = "GetAndStore " ++ show i ++ " / " ++ show n
     show (Modify s n) = "Modify " ++ show s ++ " / " ++ show n
+
+instance Show1 ActionF where
+  liftShowsPrec showp _ _ a = case a of
+    Tell x n -> showString "Tell " . shows x . showString " / " . showp 0 n
+    SetState s n -> showString "Set " . shows s . showString " / " . showp 0 n
+    AskAndStore i n -> showString "AskAndStore " . shows i . showString " / " . showp 0 n
+    GetAndStore i n -> showString "GetAndStore " . shows i . showString " / " . showp 0 n
+    Modify s n -> showString "Modify " . shows s . showString " / " . showp 0 n
 
 evaluateActions :: (MonadRWS Int [Int] Int m) => Action x -> m x
 evaluateActions (Free (Tell x next))        = tell x >>  evaluateActions next
