diff --git a/data-sketches.cabal b/data-sketches.cabal
--- a/data-sketches.cabal
+++ b/data-sketches.cabal
@@ -5,13 +5,13 @@
 -- see: https://github.com/sol/hpack
 
 name:           data-sketches
-version:        0.1.0.1
-description:    Please see the README on GitHub at <https://github.com/iand675/streaming-quantiles#readme>
-homepage:       https://github.com/iand675/data-sketches#readme
-bug-reports:    https://github.com/iand675/data-sketches/issues
+version:        0.1.0.2
+description:    Please see the README on GitHub at <https://github.com/iand675/datasketches-haskell#readme>
+homepage:       https://github.com/iand675/datasketches-haskell#readme
+bug-reports:    https://github.com/iand675/datasketches-haskell/issues
 author:         Ian Duncan, Rob Bassi
 maintainer:     ian@iankduncan.com
-copyright:      2021 Ian Duncan, Rob Bassi, Mercury Bank
+copyright:      2021 Ian Duncan, Rob Bassi, Mercury Technologies
 license:        Apache
 license-file:   LICENSE
 build-type:     Simple
@@ -25,7 +25,7 @@
 
 source-repository head
   type: git
-  location: https://github.com/iand675/data-sketches
+  location: https://github.com/iand675/datasketches-haskell
 
 library
   exposed-modules:
diff --git a/src/DataSketches/Quantiles/RelativeErrorQuantile.hs b/src/DataSketches/Quantiles/RelativeErrorQuantile.hs
--- a/src/DataSketches/Quantiles/RelativeErrorQuantile.hs
+++ b/src/DataSketches/Quantiles/RelativeErrorQuantile.hs
@@ -62,7 +62,7 @@
 import Control.Monad.Primitive
 import Control.Monad.Trans
 import Data.Bits (shiftL)
-import Data.Vector ((!))
+import Data.Vector ((!), imapM_)
 import qualified Data.Vector as Vector
 import Data.Primitive.MutVar
 import Data.Proxy
@@ -84,6 +84,7 @@
 import Control.Exception (throw, assert)
 import GHC.Generics
 import System.Random.MWC (Gen, create)
+import qualified Data.Vector.Generic.Mutable as MG
 
 data ReqSketch (k :: Nat) s = ReqSketch
   { rankAccuracySetting :: !RankAccuracy
@@ -460,20 +461,21 @@
 compress :: (PrimMonad m, KnownNat k) => ReqSketch k (PrimState m) -> m ()
 compress this = do
   compactors <- getCompactors this
-  Vector.iforM_ compactors $ \height compactor -> do
-    buffSize <- DoubleBuffer.getCount =<< Compactor.getBuffer compactor
-    nominalCapacity <- Compactor.getNominalCapacity compactor
-    when (buffSize >= nominalCapacity) $ do
-      numLevels <- getNumLevels this
-      when (height + 1 >= numLevels) $ do
-        grow this
-      compactors' <- getCompactors this
-      cReturn <- Compactor.compact compactor
-      let topCompactor = compactors' ! (height + 1)
-      buff <- Compactor.getBuffer topCompactor
-      DoubleBuffer.mergeSortIn buff $ Compactor.crDoubleBuffer cReturn
-      modifyURef (retainedItems this) (+ Compactor.crDeltaRetItems cReturn)
-      modifyURef (maxNominalCapacitiesSize this) (+ Compactor.crDeltaNominalSize cReturn)
+  let compressionStep height compactor = do
+        buffSize <- DoubleBuffer.getCount =<< Compactor.getBuffer compactor
+        nominalCapacity <- Compactor.getNominalCapacity compactor
+        when (buffSize >= nominalCapacity) $ do
+          numLevels <- getNumLevels this
+          when (height + 1 >= numLevels) $ do
+            grow this
+          compactors' <- getCompactors this
+          cReturn <- Compactor.compact compactor
+          let topCompactor = compactors' ! (height + 1)
+          buff <- Compactor.getBuffer topCompactor
+          DoubleBuffer.mergeSortIn buff $ Compactor.crDoubleBuffer cReturn
+          modifyURef (retainedItems this) (+ Compactor.crDeltaRetItems cReturn)
+          modifyURef (maxNominalCapacitiesSize this) (+ Compactor.crDeltaNominalSize cReturn)
+  imapM_ compressionStep compactors 
   writeMutVar (aux this) Nothing
 
 -- | Merge other sketch into this one.
diff --git a/src/DataSketches/Quantiles/RelativeErrorQuantile/Internal/Auxiliary.hs b/src/DataSketches/Quantiles/RelativeErrorQuantile/Internal/Auxiliary.hs
--- a/src/DataSketches/Quantiles/RelativeErrorQuantile/Internal/Auxiliary.hs
+++ b/src/DataSketches/Quantiles/RelativeErrorQuantile/Internal/Auxiliary.hs
@@ -26,6 +26,7 @@
 import DataSketches.Quantiles.RelativeErrorQuantile.Internal.InequalitySearch (find)
 import qualified DataSketches.Quantiles.RelativeErrorQuantile.Internal.InequalitySearch as IS
 import Debug.Trace
+import qualified Data.Vector.Generic.Mutable as MG
 
 data ReqAuxiliary = ReqAuxiliary
   { raWeightedItems :: {-# UNPACK #-} !(U.Vector (Double, Word64))
@@ -95,13 +96,24 @@
 createCumulativeWeights this = do
   weights <- getWeights this
   let size = MUVector.length weights
-  MUVector.iforM_ weights $ \i weight -> do
-    when (i > 0) $ do
-      prevWeight <- MUVector.read weights (i - 1)
-      MUVector.unsafeWrite weights i (weight + prevWeight)
+  let accumulateM i weight = do
+        when (i > 0) $ do
+          prevWeight <- MUVector.read weights (i - 1)
+          MUVector.unsafeWrite weights i (weight + prevWeight)
+  forI_ weights (\i -> MUVector.read weights i >>= \x -> accumulateM i x)
   lastWeight <- MUVector.read weights (size - 1)
   when (lastWeight /= mraSize this) $ do
     error "invariant violated: lastWeight does not equal raSize"
+  where
+    forI_ :: (Monad m, MG.MVector v a) => v (PrimState m) a -> (Int -> m b) -> m ()
+    {-# INLINE forI_ #-}
+    forI_ v f = loop 0
+      where
+        loop i 
+          | i >= n    = return ()
+          | otherwise = f i >> loop (i + 1)
+        n = MG.length v
+
 
 dedup :: PrimMonad m => MReqAuxiliary (PrimState m) -> m ()
 dedup this = do
diff --git a/src/DataSketches/Quantiles/RelativeErrorQuantile/Internal/Compactor.hs b/src/DataSketches/Quantiles/RelativeErrorQuantile/Internal/Compactor.hs
--- a/src/DataSketches/Quantiles/RelativeErrorQuantile/Internal/Compactor.hs
+++ b/src/DataSketches/Quantiles/RelativeErrorQuantile/Internal/Compactor.hs
@@ -19,7 +19,7 @@
 import Data.Semigroup (Semigroup)
 import Data.Word
 import DataSketches.Quantiles.RelativeErrorQuantile.Types
-import System.Random.MWC (create, Variate(uniform), Uniform (uniformM), Gen)
+import System.Random.MWC (create, Variate(uniform), Gen)
 import Control.Exception (assert)
 import Control.Monad (when)
 import Control.Monad.Trans
