diff --git a/gsl-random.cabal b/gsl-random.cabal
--- a/gsl-random.cabal
+++ b/gsl-random.cabal
@@ -1,5 +1,5 @@
 name:            gsl-random
-version:         0.2.2
+version:         0.2.3
 homepage:        http://github.com/patperry/gsl-random
 synopsis:        Bindings the the GSL random number generation facilities.
 description:
diff --git a/lib/GSL/Random/Gen/Internal.hs b/lib/GSL/Random/Gen/Internal.hs
--- a/lib/GSL/Random/Gen/Internal.hs
+++ b/lib/GSL/Random/Gen/Internal.hs
@@ -47,6 +47,8 @@
 import Foreign.ForeignPtr    ( ForeignPtr, newForeignPtr, withForeignPtr )
 import Foreign.Marshal.Array ( peekArray, pokeArray )
 import Foreign.Ptr           ( Ptr, FunPtr )
+import Foreign.Storable      ( peek )
+import System.IO.Unsafe      ( unsafePerformIO )
 
 newtype RNG     = MkRNG (ForeignPtr ())
 newtype RNGType = MkRNGType (Ptr ())
@@ -208,6 +210,7 @@
 
 
 mt19937 :: RNGType
-mt19937 = MkRNGType gsl_rng_mt19937
+mt19937 = (MkRNGType . unsafePerformIO . peek) p_gsl_rng_mt19937
 
-foreign import ccall unsafe "gsl/gsl_rng.h &" gsl_rng_mt19937 :: Ptr ()
+foreign import ccall unsafe "gsl/gsl_rng.h &gsl_rng_mt19937" 
+    p_gsl_rng_mt19937 :: Ptr (Ptr ())
