diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -4,6 +4,11 @@
 Since `rhine` reexports modules from `dunai`,
 every major version in `dunai` triggers a major version in `rhine`.
 
+## 0.7.1
+
+* Documentation improvements
+* Support for GHC 9.0.2
+
 ## 0.7.0
 
 * Replaced old reactimation mechanism by clock erasure
diff --git a/rhine.cabal b/rhine.cabal
--- a/rhine.cabal
+++ b/rhine.cabal
@@ -1,6 +1,6 @@
 name:                rhine
 
-version:             0.7.0
+version:             0.7.1
 
 synopsis: Functional Reactive Programming with type-level clocks
 
@@ -46,7 +46,7 @@
 source-repository this
   type:     git
   location: git@github.com:turion/rhine.git
-  tag:      v0.7.0
+  tag:      v0.7.1
 
 
 library
@@ -100,7 +100,7 @@
   -- other-extensions:
 
   -- Other library packages from which modules are imported.
-  build-depends:       base         >= 4.9 && < 5
+  build-depends:       base         >= 4.11 && < 4.16
                      , dunai        >= 0.6
                      , transformers >= 0.5
                      , time         >= 1.8
diff --git a/src/FRP/Rhine/ClSF/Random.hs b/src/FRP/Rhine/ClSF/Random.hs
--- a/src/FRP/Rhine/ClSF/Random.hs
+++ b/src/FRP/Rhine/ClSF/Random.hs
@@ -94,4 +94,4 @@
   :: (MonadRandom m, Random a)
   => (a, a)
   -> Behaviour m time a
-getRandomRS_ = constMCl . getRandomR
+getRandomRS_ range = constMCl $ getRandomR range
diff --git a/src/FRP/Rhine/Clock/FixedStep.hs b/src/FRP/Rhine/Clock/FixedStep.hs
--- a/src/FRP/Rhine/Clock/FixedStep.hs
+++ b/src/FRP/Rhine/Clock/FixedStep.hs
@@ -18,7 +18,7 @@
 import Data.Maybe (fromMaybe)
 import GHC.TypeLits
 
--- fixed-vector
+-- vector-sized
 import Data.Vector.Sized (Vector, fromList)
 
 -- dunai
diff --git a/src/FRP/Rhine/Clock/Realtime/Millisecond.hs b/src/FRP/Rhine/Clock/Realtime/Millisecond.hs
--- a/src/FRP/Rhine/Clock/Realtime/Millisecond.hs
+++ b/src/FRP/Rhine/Clock/Realtime/Millisecond.hs
@@ -53,6 +53,17 @@
 --   and waits for the remaining time until the next tick.
 --   If the next tick should already have occurred,
 --   the tag is set to 'False', representing a failed real time attempt.
+
+--   Note that this clock internally uses 'threadDelay' which can block
+--   for quite a lot longer than the requested time, which can cause
+--   the clock to miss one or more ticks when using low values of 'n'. 
+--   When using 'threadDelay', the difference between the real wait time 
+--   and the requested wait time will be larger when using 
+--   the '-threaded' ghc option (around 800 microseconds) than when not using
+--   this option (around 100 microseconds). For low values of @n@ it is recommended
+--   that '-threaded' not be used in order to miss less ticks. The clock will adjust 
+--   the wait time, up to no wait time at all, to catch up when a tick is missed.
+
 waitClock :: KnownNat n => Millisecond n
 waitClock = Millisecond $ RescaledClockS FixedStep $ \_ -> do
   initTime <- getCurrentTime
diff --git a/src/FRP/Rhine/Type.hs b/src/FRP/Rhine/Type.hs
--- a/src/FRP/Rhine/Type.hs
+++ b/src/FRP/Rhine/Type.hs
@@ -41,6 +41,9 @@
 {- |
 Start the clock and the signal network,
 effectively hiding the clock type from the outside.
+
+Since the caller will not know when the clock @'In' cl@ ticks,
+the input 'a' has to be given at all times, even those when it doesn't tick.
 -}
 eraseClock
   :: (Monad m, Clock m cl, GetClockProxy cl)
