diff --git a/mwc-probability.cabal b/mwc-probability.cabal
--- a/mwc-probability.cabal
+++ b/mwc-probability.cabal
@@ -1,5 +1,5 @@
 name:                mwc-probability
-version:             1.2.2
+version:             1.3.0
 homepage:            http://github.com/jtobin/mwc-probability
 license:             MIT
 license-file:        LICENSE
@@ -53,6 +53,6 @@
   build-depends:
       base          >  4 && < 6
     , mwc-random    >  0.13 && < 0.14
-    , primitive
-    , transformers
+    , primitive     >= 0.6 && < 1.0
+    , transformers  >= 0.5 && < 1.0
 
diff --git a/src/System/Random/MWC/Probability.hs b/src/System/Random/MWC/Probability.hs
--- a/src/System/Random/MWC/Probability.hs
+++ b/src/System/Random/MWC/Probability.hs
@@ -219,9 +219,9 @@
 
 -- | The Dirichlet distribution.
 dirichlet
-  :: (Foldable f, PrimMonad m) => f Double -> Prob m [Double]
+  :: (Traversable f, PrimMonad m) => f Double -> Prob m (f Double)
 dirichlet as = do
-  zs <- mapM (`gamma` 1) (F.toList as)
+  zs <- traverse (`gamma` 1) as
   return $ fmap (/ sum zs) zs
 {-# INLINABLE dirichlet #-}
 
@@ -258,8 +258,9 @@
 {-# INLINABLE student #-}
 
 -- | An isotropic or spherical Gaussian distribution.
-isoGauss :: (Foldable f, PrimMonad m) => f Double -> Double -> Prob m [Double]
-isoGauss ms sd = mapM (`normal` sd) (F.toList ms)
+isoGauss
+  :: (Traversable f, PrimMonad m) => f Double -> Double -> Prob m (f Double)
+isoGauss ms sd = traverse (`normal` sd) ms
 {-# INLINABLE isoGauss #-}
 
 -- | The Poisson distribution.
