diff --git a/declarative.cabal b/declarative.cabal
--- a/declarative.cabal
+++ b/declarative.cabal
@@ -1,5 +1,5 @@
 name:                declarative
-version:             0.5.2
+version:             0.5.3
 synopsis:            DIY Markov Chains.
 homepage:            http://github.com/jtobin/declarative
 license:             MIT
@@ -8,6 +8,7 @@
 maintainer:          jared@jtobin.ca
 category:            Math
 build-type:          Simple
+tested-with:         GHC == 8.2.2, GHC == 8.8.3
 cabal-version:       >=1.10
 description:
   This package presents a simple combinator language for Markov transition
@@ -65,7 +66,7 @@
     , kan-extensions    >= 5 && < 6
     , mcmc-types        >= 1.0.1 && < 2
     , mwc-probability   >= 2.0 && < 3
-    , mighty-metropolis >= 1.0.4 && < 2
+    , mighty-metropolis >= 2.0 && < 3
     , lens              >= 4 && < 5
     , primitive         >= 0.6 && < 1.0
     , pipes             >= 4 && < 5
diff --git a/lib/Numeric/MCMC.hs b/lib/Numeric/MCMC.hs
--- a/lib/Numeric/MCMC.hs
+++ b/lib/Numeric/MCMC.hs
@@ -90,12 +90,11 @@
 
 import Control.Monad (replicateM)
 import Control.Monad.Codensity (lowerCodensity)
-import Control.Monad.IO.Class (MonadIO, liftIO)
 import Control.Monad.Primitive (PrimMonad, PrimState, RealWorld)
 import Control.Monad.Trans.State.Strict (execStateT)
 import Data.Sampling.Types
 import Numeric.MCMC.Anneal
-import Numeric.MCMC.Metropolis (metropolis)
+import qualified Numeric.MCMC.Metropolis as M (metropolis)
 import Numeric.MCMC.Hamiltonian (hamiltonian)
 import Numeric.MCMC.Slice (slice)
 import Pipes hiding (next)
@@ -206,3 +205,9 @@
     yield next
     loop next prng
 
+-- | A generic Metropolis transition operator.
+metropolis
+  :: (Traversable f, PrimMonad m)
+  => Double
+  -> Transition m (Chain (f Double) b)
+metropolis radial = M.metropolis radial Nothing
