diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,4 +1,7 @@
 - 0.2.4.0
+    Build on GHC 9.6.
+
+- 0.2.3.1
     Bifoldable and Bitraversable instances for Of.
 
     Various documentation fixes.
diff --git a/src/Data/Functor/Of.hs b/src/Data/Functor/Of.hs
--- a/src/Data/Functor/Of.hs
+++ b/src/Data/Functor/Of.hs
@@ -78,7 +78,7 @@
 instance Monoid a => Monad (Of a) where
   return = pure
   {-#INLINE return #-}
-  (m :> _) >> (m' :> y) = mappend m m' :> y
+  (>>) = (*>)
   {-#INLINE (>>) #-}
   (m :> x) >>= f = let m' :> y = f x in mappend m m' :> y
   {-#INLINE (>>=) #-}
diff --git a/src/Streaming/Internal.hs b/src/Streaming/Internal.hs
--- a/src/Streaming/Internal.hs
+++ b/src/Streaming/Internal.hs
@@ -194,21 +194,26 @@
 -- like producing @m String@, except that a @ShowSWrapper@ can be
 -- shown at any precedence. So the 'Show' instance for @m@ can show
 -- the contents at the correct precedence.
-instance (Monad m, Show r, Show (m ShowSWrapper), Show (f (Stream f m r)))
+instance (Monad m, Functor f, Show (m ShowSWrapper), Show (f ShowSWrapper), Show r)
          => Show (Stream f m r) where
-  showsPrec p xs = showParen (p > 10) $
-                     showString "Effect " . (showsPrec 11 $
-    flip fmap (inspect xs) $ \front ->
-      SS $ \d -> showParen (d > 10) $
-        case front of
-          Left  r -> showString "Return " . showsPrec 11 r
-          Right f -> showString "Step "   . showsPrec 11 f)
+  showsPrec = liftShowsPrec' showsPrec showList
 
 #if MIN_VERSION_base(4,9,0)
 
 instance (Monad m, Functor f, Show (m ShowSWrapper), Show (f ShowSWrapper))
          => Show1 (Stream f m) where
-  liftShowsPrec sp sl p xs = showParen (p > 10) $
+  liftShowsPrec = liftShowsPrec'
+
+#endif
+
+liftShowsPrec'
+  :: (Monad m, Functor f, Show (m ShowSWrapper), Show (f ShowSWrapper))
+  => (Int -> a -> ShowS)
+  -> ([a] -> ShowS)
+  -> Int
+  -> Stream f m a
+  -> ShowS
+liftShowsPrec' sp sl p xs = showParen (p > 10) $
                      showString "Effect " . (showsPrec 11 $
     flip fmap (inspect xs) $ \front ->
       SS $ \d -> showParen (d > 10) $
@@ -216,8 +221,6 @@
           Left  r -> showString "Return " . sp 11 r
           Right f -> showString "Step "   .
                      showsPrec 11 (fmap (SS . (\str i -> liftShowsPrec sp sl i str)) f))
-
-#endif
 
 newtype ShowSWrapper = SS (Int -> ShowS)
 instance Show ShowSWrapper where
diff --git a/streaming.cabal b/streaming.cabal
--- a/streaming.cabal
+++ b/streaming.cabal
@@ -1,5 +1,5 @@
 name:                streaming
-version:             0.2.3.1
+version:             0.2.4.0
 cabal-version:       >=1.10
 build-type:          Simple
 synopsis:            an elementary streaming prelude and general stream type.
@@ -206,9 +206,9 @@
     , Data.Functor.Of
   build-depends:
       base >=4.8 && <5
-    , mtl >=2.1 && <2.3
+    , mtl >=2.1 && <2.4
     , mmorph >=1.0 && <1.3
-    , transformers >=0.4 && <0.6
+    , transformers >=0.4 && <0.7
     , transformers-base < 0.5
     , ghc-prim
     , containers
