diff --git a/library/PrimitiveExtras/IO.hs b/library/PrimitiveExtras/IO.hs
--- a/library/PrimitiveExtras/IO.hs
+++ b/library/PrimitiveExtras/IO.hs
@@ -90,15 +90,15 @@
 -------------------------
 
 newTVarArray :: a -> Int -> IO (TVarArray a)
-newTVarArray a size = TVarArray <$> replicateArray size (newTVarIO a)
+newTVarArray a size = TVarArray <$> replicateUnliftedArray size (newTVarIO a)
 
 freezeTVarArrayAsPrimArray :: Prim a => TVarArray a -> IO (PrimArray a)
 freezeTVarArrayAsPrimArray (TVarArray varArray) =
   do
-    let size = sizeofArray varArray
+    let size = sizeofUnliftedArray varArray
     mpa <- newPrimArray size
     forMFromZero_ size $ \ index -> do
-      var <- indexArrayM varArray index
+      var <- indexUnliftedArrayM varArray index
       value <- atomically (readTVar var)
       writePrimArray mpa index value
     unsafeFreezePrimArray mpa
@@ -106,5 +106,5 @@
 modifyTVarArrayAt :: TVarArray a -> Int -> (a -> a) -> IO ()
 modifyTVarArrayAt (TVarArray array) index fn =
   do
-    var <- indexArrayM array index
+    var <- indexUnliftedArrayM array index
     atomically $ modifyTVar' var fn
diff --git a/library/PrimitiveExtras/Types.hs b/library/PrimitiveExtras/Types.hs
--- a/library/PrimitiveExtras/Types.hs
+++ b/library/PrimitiveExtras/Types.hs
@@ -6,4 +6,4 @@
 
 newtype PrimMultiArray a = PrimMultiArray (UnliftedArray (PrimArray a))
 
-newtype TVarArray a = TVarArray (Array (TVar a))
+newtype TVarArray a = TVarArray (UnliftedArray (TVar a))
diff --git a/primitive-extras.cabal b/primitive-extras.cabal
--- a/primitive-extras.cabal
+++ b/primitive-extras.cabal
@@ -1,7 +1,7 @@
 name:
   primitive-extras
 version:
-  0.3
+  0.3.0.1
 category:
   Primitive
 synopsis:
