diff --git a/random-mhs.cabal b/random-mhs.cabal
--- a/random-mhs.cabal
+++ b/random-mhs.cabal
@@ -1,6 +1,6 @@
 cabal-version:      >=1.10
 name:               random-mhs
-version:            1.3.1.1
+version:            1.3.2
 license:            BSD3
 license-file:       LICENSE
 maintainer:         lennart@augustsson.net
diff --git a/src/System/Random/Array.hs b/src/System/Random/Array.hs
--- a/src/System/Random/Array.hs
+++ b/src/System/Random/Array.hs
@@ -238,15 +238,14 @@
 {-# INLINE writeArray #-}
 
 #else /* !defined(__MHS__) */
+import qualified Data.Array as A
 import Data.Array.Byte
 import Data.Bits
 import Data.ByteString(ByteString)
 import Data.ByteString.Short.Internal
+import qualified Data.STArray as SA
 import Data.Word
-import qualified Mhs.Arr as A
-import qualified Mhs.MutArr as SA
 import GHC.Exts(unsafeIOToST)
-import System.IO.Unsafe(unsafePerformIO)
 
 wordSizeInBits :: Int
 wordSizeInBits = _wordSize
@@ -281,25 +280,23 @@
 
 --------
 
-type Array a = A.Arr a
-type MutableArray s a = SA.MutSTArr s a
+type Array a = A.Array Int a
+type MutableArray s a = SA.STArray s a
 
 newMutableArray :: Int -> a -> ST s (MutableArray s a)
-newMutableArray = SA.newMutSTArr
+newMutableArray = SA.newSTArray
 
 freezeMutableArray :: MutableArray s a -> ST s (Array a)
-freezeMutableArray a = A.copyArr <$> A.unsafeFreezeMutSTArr a
+freezeMutableArray = SA.freezeSTArray
 
 sizeOfMutableArray :: MutableArray s a -> Int
-sizeOfMutableArray (SA.MutSTArr a) = unsafePerformIO (SA.sizeMutIOArr a)
+sizeOfMutableArray = SA.sizeSTArray
 
 readArray :: MutableArray s a -> Int -> ST s a
-readArray a i | i < 0 || i >= sizeOfMutableArray a = error "readArray"
-              | otherwise = SA.unsafeReadMutSTArr a i
+readArray = SA.readSTArray
 
 writeArray :: MutableArray s a -> Int -> a -> ST s ()
-writeArray a i x | i < 0 || i >= sizeOfMutableArray a = error "writeArray"
-                 | otherwise = SA.unsafeWriteMutSTArr a i x
+writeArray = SA.writeSTArray
 
 #endif /* !defined(__MHS__) */
 
