diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+### 0.1.2.0
+
+* Allow primitive-0.6.
+
 ### 0.1.1.0
 
 * Add uniformB, a function to generate a bounded random number in [0,b)
diff --git a/pcg-random.cabal b/pcg-random.cabal
--- a/pcg-random.cabal
+++ b/pcg-random.cabal
@@ -1,5 +1,5 @@
 name:                pcg-random
-version:             0.1.1.0
+version:             0.1.2.0
 synopsis:            Haskell bindings to the PCG random number generator.
 description:
   PCG is a family of simple fast space-efficient statistically good
@@ -44,7 +44,7 @@
   other-extensions:    BangPatterns, CPP, ForeignFunctionInterface
   build-depends:
     base      >=4.3 && < 5,
-    primitive >=0.4 && < 0.6,
+    primitive >=0.4 && < 0.7,
     random    >=1.0 && < 2.0,
     time
   default-language:    Haskell2010
diff --git a/src/System/Random/PCG.hs b/src/System/Random/PCG.hs
--- a/src/System/Random/PCG.hs
+++ b/src/System/Random/PCG.hs
@@ -165,11 +165,11 @@
 
 -- | Seed with system random number. (\"@\/dev\/urandom@\" on Unix-like
 --   systems, time otherwise).
-withSystemRandom :: PrimMonad m => (Gen (PrimState m) -> m a) -> IO a
+withSystemRandom :: (GenIO -> IO a) -> IO a
 withSystemRandom f = do
   w1 <- sysRandom
   w2 <- sysRandom
-  unsafePrimToIO $ initialize w1 w2 >>= f
+  initialize w1 w2 >>= f
 
 -- | Seed a PRNG with data from the system's fast source of pseudo-random
 -- numbers. All the caveats of 'withSystemRandom' apply here as well.
diff --git a/src/System/Random/PCG/Fast.hs b/src/System/Random/PCG/Fast.hs
--- a/src/System/Random/PCG/Fast.hs
+++ b/src/System/Random/PCG/Fast.hs
@@ -146,10 +146,10 @@
 
 -- | Seed with system random number. (\"@\/dev\/urandom@\" on Unix-like
 --   systems, time otherwise).
-withSystemRandom :: PrimMonad m => (Gen (PrimState m) -> m a) -> IO a
+withSystemRandom :: (GenIO -> IO a) -> IO a
 withSystemRandom f = do
   w <- sysRandom
-  unsafePrimToIO $ initialize w >>= f
+  initialize w >>= f
 
 -- | Seed a PRNG with data from the system's fast source of pseudo-random
 -- numbers. All the caveats of 'withSystemRandom' apply here as well.
