diff --git a/concurrent-machines.cabal b/concurrent-machines.cabal
--- a/concurrent-machines.cabal
+++ b/concurrent-machines.cabal
@@ -1,5 +1,5 @@
 name:                concurrent-machines
-version:             0.3.1.4
+version:             0.3.1.5
 synopsis:            Concurrent networked stream transducers
 
 description: A simple use-case for this library is to run the stages
@@ -31,7 +31,7 @@
 build-type:          Simple
 extra-source-files:  README.md, CHANGELOG.md
 cabal-version:       >=1.10
-tested-with:         GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.4, GHC == 9.0.1
+tested-with:         GHC == 8.6.5 || == 8.8.4 || == 8.10.7 || == 9.0.2 || == 9.2.1
 
 source-repository head
   type:     git
@@ -56,14 +56,14 @@
                        ScopedTypeVariables
   build-depends:       base >= 4.8 && < 5,
                        monad-control >= 1.0 && < 1.1,
-                       transformers >= 0.4 && < 0.6,
-                       time >= 1.4 && < 1.10,
+                       transformers >= 0.4 && < 0.7,
+                       time >= 1.4 && < 1.14,
                        containers >= 0.5 && < 0.7,
-                       transformers-base >= 0.4 && < 0.6,
+                       transformers-base >= 0.4 && < 0.7,
                        machines >= 0.5 && < 0.8,
                        async >= 2.0.1 && < 2.3,
                        lifted-async >= 0.1 && < 0.11,
-                       semigroups >= 0.8 && < 0.20
+                       semigroups >= 0.8 && < 0.21
   hs-source-dirs:      src
   default-language:    Haskell2010
   ghc-options: -Wall
@@ -74,7 +74,7 @@
   main-is: AllTests.hs
   ghc-options: -Wall -threaded
   default-language: Haskell2010
-  build-depends: base >= 4.6 && < 5, concurrent-machines, machines,
+  build-depends: base, concurrent-machines, machines,
                  tasty, tasty-hunit, transformers, time
 
 -- This is a nice modification of the tests that generates plots for
@@ -92,13 +92,13 @@
   ghc-options: -Wall -O0
   default-language: Haskell2010
   if flag(splot)
-    build-depends: base >= 4.6 && < 5, concurrent-machines, machines,
+    build-depends: base, concurrent-machines, machines,
                    process, tasty, tasty-hunit, transformers, time
 
 benchmark fanout
   type: exitcode-stdio-1.0
   hs-source-dirs: examples
   main-is: ExampleFanout.hs
-  build-depends: base >= 4.8 && < 5, time, machines, concurrent-machines
+  build-depends: base, time, machines, concurrent-machines
   default-language: Haskell2010
   ghc-options: -threaded "-with-rtsopts=-N2"
diff --git a/src/Data/Machine/Concurrent/Scatter.hs b/src/Data/Machine/Concurrent/Scatter.hs
--- a/src/Data/Machine/Concurrent/Scatter.hs
+++ b/src/Data/Machine/Concurrent/Scatter.hs
@@ -186,13 +186,13 @@
 -- keep running it as long as upstream does not yield a 'Left' which
 -- we can not handle. When upstream yields a 'Left', we 'stop'.
 rightOnly :: Monad m => ProcessT m b r -> ProcessT m (Either a b) r
-rightOnly snk = repeatedly (await >>= either (const stop) yield) ~> snk
+rightOnly snk = repeatedly (await >>= either (const stop) (\x -> yield x)) ~> snk
 
 -- | We have a sink for the Left output of a source, so we want to
 -- keep running it as long as upstream does not yield a 'Right' which
 -- we can not handle. When upstream yields a 'Right', we 'stop'.
 leftOnly :: Monad m => ProcessT m a r -> ProcessT m (Either a b) r
-leftOnly snk = repeatedly (await >>= either yield (const stop)) ~> snk
+leftOnly snk = repeatedly (await >>= either (\x -> yield x) (const stop)) ~> snk
 
 -- | Connect two processes to the downstream tails of a 'Machine' that
 -- produces tuples. The two downstream consumers are run
diff --git a/src/Data/Machine/Regulated.hs b/src/Data/Machine/Regulated.hs
--- a/src/Data/Machine/Regulated.hs
+++ b/src/Data/Machine/Regulated.hs
@@ -14,7 +14,7 @@
 regulated :: MonadIO m => Double -> ProcessT m a a
 regulated target = construct $ liftIO getCurrentTime >>= go 0
   where go dt prevT =
-          do await >>= yield
+          do await >>= \x -> yield x
              t <- liftIO getCurrentTime
              let e = target - realToFrac (diffUTCTime t prevT)
                  dt' = dt + 0.5 * e
