diff --git a/library/PrimitiveExtras/Folds.hs b/library/PrimitiveExtras/Folds.hs
--- a/library/PrimitiveExtras/Folds.hs
+++ b/library/PrimitiveExtras/Folds.hs
@@ -73,7 +73,7 @@
           UA.generate outerLength $ \ index -> do
             newPrimArray (fromIntegral (indexPrimArray sizeArray index))
     step (Product2 indexArray multiArray) (outerIndex, element) = do
-      innerArray <- indexUnliftedArrayM multiArray outerIndex
+      let innerArray = indexUnliftedArray multiArray outerIndex 
       innerIndex <- readPrimArray indexArray outerIndex
       writePrimArray indexArray outerIndex (succ innerIndex)
       writePrimArray innerArray (fromIntegral innerIndex) element
diff --git a/library/PrimitiveExtras/Prelude.hs b/library/PrimitiveExtras/Prelude.hs
--- a/library/PrimitiveExtras/Prelude.hs
+++ b/library/PrimitiveExtras/Prelude.hs
@@ -93,6 +93,11 @@
 import Data.Primitive as Exports
 import Control.Monad.Primitive as Exports
 
+-- primitive-unlifted
+-------------------------
+import Data.Primitive.Unlifted.Array as Exports
+import Data.Primitive.Unlifted.Class as Exports
+
 -- focus
 -------------------------
 import Focus as Exports (Focus(..))
diff --git a/library/PrimitiveExtras/PrimMultiArray.hs b/library/PrimitiveExtras/PrimMultiArray.hs
--- a/library/PrimitiveExtras/PrimMultiArray.hs
+++ b/library/PrimitiveExtras/PrimMultiArray.hs
@@ -30,8 +30,6 @@
 
 deriving instance (Eq a, Prim a) => Eq (PrimMultiArray a)
 
-deriving instance (Ord a, Prim a) => Ord (PrimMultiArray a)
-
 instance (Show a, Prim a) => Show (PrimMultiArray a) where
   show (PrimMultiArray outerArray) =
     unliftedArrayToList outerArray &
diff --git a/library/PrimitiveExtras/TVarArray.hs b/library/PrimitiveExtras/TVarArray.hs
deleted file mode 100644
--- a/library/PrimitiveExtras/TVarArray.hs
+++ /dev/null
@@ -1,33 +0,0 @@
-module PrimitiveExtras.TVarArray
-(
-  TVarArray,
-  new,
-  freezeAsPrimArray,
-  modifyAt,
-)
-where
-
-import PrimitiveExtras.Prelude
-import PrimitiveExtras.Types
-import qualified PrimitiveExtras.UnliftedArray as UnliftedArray
-
-
-new :: a -> Int -> IO (TVarArray a)
-new a size = TVarArray <$> UnliftedArray.replicateIO size (newTVarIO a)
-
-freezeAsPrimArray :: Prim a => TVarArray a -> IO (PrimArray a)
-freezeAsPrimArray (TVarArray varArray) =
-  do
-    let size = sizeofUnliftedArray varArray
-    mpa <- newPrimArray size
-    forMFromZero_ size $ \ index -> do
-      var <- indexUnliftedArrayM varArray index
-      value <- atomically (readTVar var)
-      writePrimArray mpa index value
-    unsafeFreezePrimArray mpa
-
-modifyAt :: TVarArray a -> Int -> (a -> a) -> IO ()
-modifyAt (TVarArray array) index fn =
-  do
-    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,8 +6,6 @@
 
 newtype PrimMultiArray a = PrimMultiArray (UnliftedArray (PrimArray a))
 
-newtype TVarArray a = TVarArray (UnliftedArray (TVar a))
-
 {-|
 An immutable space-efficient sparse array, 
 which can only store not more than 32 or 64 elements depending on the system architecure.
diff --git a/library/PrimitiveExtras/UnliftedArray.hs b/library/PrimitiveExtras/UnliftedArray.hs
--- a/library/PrimitiveExtras/UnliftedArray.hs
+++ b/library/PrimitiveExtras/UnliftedArray.hs
@@ -47,8 +47,7 @@
     size = sizeofUnliftedArray array
     iterate index = if index < size
       then do
-        element <- indexUnliftedArrayM array index
-        action element
+        action (indexUnliftedArray array index)
         iterate (succ index)
       else return ()
     in iterate 0
diff --git a/primitive-extras.cabal b/primitive-extras.cabal
--- a/primitive-extras.cabal
+++ b/primitive-extras.cabal
@@ -1,5 +1,5 @@
 name: primitive-extras
-version: 0.7.1.1
+version: 0.8
 category: Primitive
 synopsis: Extras for the "primitive" library
 homepage: https://github.com/metrix-ai/primitive-extras
@@ -24,7 +24,6 @@
     PrimitiveExtras.Bitmap
     PrimitiveExtras.SmallArray
     PrimitiveExtras.SparseSmallArray
-    PrimitiveExtras.TVarArray
     PrimitiveExtras.PrimArray
     PrimitiveExtras.UnliftedArray
     PrimitiveExtras.PrimMultiArray
@@ -41,7 +40,8 @@
     focus >=1 && <1.1,
     foldl >=1 && <2,
     list-t >=1.0.1 && <1.1,
-    primitive >=0.6.4 && <0.8,
+    primitive >=0.7 && <0.8,
+    primitive-unlifted >=0.1.1.0 && <0.2,
     profunctors >=5 && <6,
     vector >=0.12 && <0.13
 
@@ -60,9 +60,9 @@
     focus,
     primitive,
     primitive-extras,
-    QuickCheck >=2.8.1 && <3,
-    quickcheck-instances >=0.3.11 && <0.4,
+    QuickCheck >=2.13.1 && <3,
+    quickcheck-instances >=0.3.21 && <0.4,
     rerebase <2,
-    tasty >=0.12 && <2,
-    tasty-hunit >=0.9 && <0.11,
-    tasty-quickcheck >=0.9 && <0.11
+    tasty >=1.2.2 && <2,
+    tasty-hunit >=0.10.0.2 && <0.11,
+    tasty-quickcheck >=0.10.1 && <0.11
