diff --git a/rhine-bayes.cabal b/rhine-bayes.cabal
--- a/rhine-bayes.cabal
+++ b/rhine-bayes.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name: rhine-bayes
-version: 1.7
+version: 1.8
 synopsis: monad-bayes backend for Rhine
 description:
   This package provides a backend to the @monad-bayes@ library,
@@ -30,11 +30,11 @@
 common opts
   build-depends:
     automaton,
-    base >=4.16 && <4.22,
+    base >=4.18 && <4.22,
     log-domain >=0.12,
     mmorph ^>=1.2,
     monad-bayes ^>=1.3.0.5,
-    rhine ^>=1.7,
+    rhine ^>=1.8,
     transformers >=0.5,
 
   default-extensions:
@@ -50,6 +50,7 @@
     RankNTypes
     ScopedTypeVariables
     TupleSections
+    TypeApplications
     TypeFamilies
     TypeOperators
 
@@ -71,7 +72,7 @@
   hs-source-dirs: app
   build-depends:
     rhine-bayes,
-    rhine-gloss ^>=1.7,
+    rhine-gloss ^>=1.8,
     time,
 
   ghc-options:
diff --git a/src/FRP/Rhine/Bayes.hs b/src/FRP/Rhine/Bayes.hs
--- a/src/FRP/Rhine/Bayes.hs
+++ b/src/FRP/Rhine/Bayes.hs
@@ -1,16 +1,17 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
 module FRP.Rhine.Bayes where
 
 -- transformers
 import Control.Monad.Trans.Reader (ReaderT (..))
 
--- log-domain
-import Numeric.Log hiding (sum)
-
 -- monad-bayes
 import Control.Monad.Bayes.Class
 import Control.Monad.Bayes.Population
+import Control.Monad.Bayes.Sampler.Strict (SamplerT (..))
 
 -- automaton
+import Data.Automaton.Schedule (MonadSchedule (..))
 import qualified Data.Automaton.Trans.Reader as AutomatonReader
 
 -- rhine-bayes
@@ -19,6 +20,10 @@
 -- rhine
 import FRP.Rhine
 
+-- | 'SamplerT' is a newtype over 'ReaderT', so it inherits 'MonadSchedule' via 'hoistS'.
+instance (Monad m, MonadSchedule m) => MonadSchedule (SamplerT g m) where
+  schedule = fmap (hoistS runSamplerT) >>> schedule >>> hoistS SamplerT
+
 -- * Inference methods
 
 -- | Run the Sequential Monte Carlo algorithm continuously on a 'ClSF'.
@@ -102,11 +107,11 @@
 wienerVaryingLogDomain = wienerVarying >>> arr Exp
 
 {- | Inhomogeneous Poisson point process, as described in:
-  https://en.wikipedia.org/wiki/Poisson_point_process#Inhomogeneous_Poisson_point_process
+ https://en.wikipedia.org/wiki/Poisson_point_process#Inhomogeneous_Poisson_point_process
 
-  * The input is the inverse of the current rate or intensity.
-    It corresponds to the average duration between two events.
-  * The output is the number of events since the last tick.
+ * The input is the inverse of the current rate or intensity.
+   It corresponds to the average duration between two events.
+ * The output is the number of events since the last tick.
 -}
 poissonInhomogeneous ::
   (MonadDistribution m, Real (Diff td), Fractional (Diff td)) =>
@@ -123,7 +128,7 @@
 
 {- | The Gamma process, https://en.wikipedia.org/wiki/Gamma_process.
 
-  The live input corresponds to inverse shape parameter, which is variance over mean.
+ The live input corresponds to inverse shape parameter, which is variance over mean.
 -}
 gammaInhomogeneous ::
   (MonadDistribution m, Real (Diff td), Fractional (Diff td), Floating (Diff td)) =>
@@ -136,8 +141,8 @@
 
 {- | The inhomogeneous Bernoulli process, https://en.wikipedia.org/wiki/Bernoulli_process
 
-  Throws a coin to a given probability at each tick.
-  The live input is the probability.
+ Throws a coin to a given probability at each tick.
+ The live input is the probability.
 -}
 bernoulliInhomogeneous :: (MonadDistribution m) => BehaviourF m td Double Bool
 bernoulliInhomogeneous = arrMCl bernoulli
