diff --git a/System/Random/MWC.hs b/System/Random/MWC.hs
--- a/System/Random/MWC.hs
+++ b/System/Random/MWC.hs
@@ -21,6 +21,8 @@
     (
     -- * Types
       Gen
+    , GenIO
+    , GenST
     , Seed
     , Variate(..)
     -- * Other distributions
@@ -44,6 +46,7 @@
 
 import Control.Exception (IOException, catch)
 import Control.Monad (ap, liftM, unless)
+import Control.Monad.ST (ST)
 import Control.Monad.Primitive (PrimMonad, PrimState, unsafePrimToIO)
 import Data.Bits ((.&.), (.|.), xor)
 import Data.IORef (atomicModifyIORef, newIORef)
@@ -210,6 +213,12 @@
 -- | State of the pseudo-random number generator.
 newtype Gen s = Gen (M.MVector s Word32)
 
+-- | A shorter name for PRNG state in the IO monad.
+type GenIO = Gen (PrimState IO)
+
+-- | A shorter name for PRNG state in the ST monad.
+type GenST s = Gen (PrimState (ST s))
+
 ioff, coff :: Int
 ioff = 256
 coff = 257
@@ -403,8 +412,8 @@
             then return x
             else loop
     blocks = let f = exp (-0.5 * r * r)
-             in (`I.snoc` 0) . I.cons (v/f) . I.cons r . I.take 126 .
-                I.unfoldr go $! T r f
+             in (`I.snoc` 0) . I.cons (v/f) . I.cons r .
+                I.unfoldrN 126 go $! T r f
       where
         go (T b g)   = let !u = T h (exp (-0.5 * h * h))
                            h  = sqrt (-2 * log (v / b + g))
diff --git a/mwc-random.cabal b/mwc-random.cabal
--- a/mwc-random.cabal
+++ b/mwc-random.cabal
@@ -1,5 +1,5 @@
 name:           mwc-random
-version:        0.5.0.0
+version:        0.5.1.1
 synopsis:       Fast, high quality pseudo random number generation
 description:
   This package contains code for generating high quality random
