diff --git a/hw-balancedparens.cabal b/hw-balancedparens.cabal
--- a/hw-balancedparens.cabal
+++ b/hw-balancedparens.cabal
@@ -1,5 +1,5 @@
 name:                   hw-balancedparens
-version:                0.0.0.2
+version:                0.1.0.0
 synopsis:               Balanced parentheses
 description:            Please see README.md
 homepage:               http://github.com/haskell-works/hw-balancedparens#readme
@@ -8,7 +8,7 @@
 author:                 John Ky
 maintainer:             newhoggy@gmail.com
 copyright:              2016 John Ky
-category:               Data, Conduit
+category:               Data
 build-type:             Simple
 extra-source-files:     README.md
 cabal-version:          >= 1.22
@@ -31,10 +31,10 @@
                       , HaskellWorks.Data.BalancedParens.RangeMinMax2
                       , HaskellWorks.Data.BalancedParens.Simple
   build-depends:        base                          >= 4          && < 5
-                      , hw-bits                       >= 0.3.0.0
-                      , hw-excess                     >= 0.0.0.1
-                      , hw-prim                       >= 0.3.0.5
-                      , hw-rankselect-base            >= 0.1.0.0
+                      , hw-bits                       >= 0.4.0.0
+                      , hw-excess                     >= 0.1.0.0
+                      , hw-prim                       >= 0.4.0.0
+                      , hw-rankselect-base            >= 0.2.0.0
                       , vector
 
   default-language:     Haskell2010
@@ -51,9 +51,9 @@
   build-depends:        base                          >= 4          && < 5
                       , hspec
                       , hw-balancedparens
-                      , hw-bits                       >= 0.3.0.0
-                      , hw-prim                       >= 0.3.0.5
-                      , hw-rankselect-base            >= 0.1.0.0
+                      , hw-bits                       >= 0.4.0.0
+                      , hw-prim                       >= 0.4.0.0
+                      , hw-rankselect-base            >= 0.2.0.0
                       , QuickCheck
                       , vector
   ghc-options:          -threaded -rtsopts -with-rtsopts=-N -Wall
@@ -72,6 +72,6 @@
     Build-Depends:      base                          >= 4          && < 5
                       , criterion
                       , hw-balancedparens
-                      , hw-bits                       >= 0.3.0.0
-                      , hw-prim                       >= 0.3.0.5
+                      , hw-bits                       >= 0.4.0.0
+                      , hw-prim                       >= 0.4.0.0
                       , vector
diff --git a/test/HaskellWorks/Data/BalancedParens/RangeMinMax2Spec.hs b/test/HaskellWorks/Data/BalancedParens/RangeMinMax2Spec.hs
--- a/test/HaskellWorks/Data/BalancedParens/RangeMinMax2Spec.hs
+++ b/test/HaskellWorks/Data/BalancedParens/RangeMinMax2Spec.hs
@@ -7,12 +7,12 @@
 
 import qualified Data.Vector.Storable                                     as DVS
 import           Data.Word
--- import           HaskellWorks.Data.BalancedParens
--- import           HaskellWorks.Data.BalancedParens.RangeMinMax
+import           HaskellWorks.Data.BalancedParens
+import           HaskellWorks.Data.BalancedParens.RangeMinMax
 -- import           HaskellWorks.Data.BalancedParens.RangeMinMax2
 -- import           HaskellWorks.Data.Bits.BitLength
 import           HaskellWorks.Data.Bits.BitShow
--- import           HaskellWorks.Data.Bits.FromBitTextByteString
+import           HaskellWorks.Data.Bits.FromBitTextByteString
 import           Test.Hspec
 import           Test.QuickCheck
 
@@ -36,83 +36,93 @@
 
 spec :: Spec
 spec = describe "HaskellWorks.Data.BalancedParens.RangeMinMaxSpec2" $ do
-  it "Skip tests" $ do
-    True `shouldBe` True
-  -- it "For a simple bit string can find close" $ do
-  --   let v = fromBitTextByteString "11101111 10100101 01111110 10110010 10111011 10111011 00011111 11011100" :: DVS.Vector Word64
-  --   let !rmm = mkRangeMinMax v
-  --   findClose rmm 61 `shouldBe` findClose v 61
+  -- let maxSuccessDefault = 5
+  it "For a simple bit string can find close" $ do
+    let v = fromBitTextByteString "11101111 10100101 01111110 10110010 10111011 10111011 00011111 11011100" :: DVS.Vector Word64
+    let !rmm = mkRangeMinMax v
+    findClose rmm 61 `shouldBe` findClose v 61
   -- it "findClose should return the same result" $ do
-  --   forAll (vectorSizedBetween 1 4) $ \(ShowVector v) -> do
-  --     let !rmm = mkRangeMinMax v
-  --     let len = bitLength v
-  --     [findClose rmm i | i <- [1..len]] `shouldBe `[findClose v i | i <- [1..len]]
-  -- it "findClose should return the same result over all counts" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     forAll (choose (1, bitLength v)) $ \p -> do
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 4) $ \(ShowVector v) -> do
   --       let !rmm = mkRangeMinMax v
-  --       findClose rmm p `shouldBe` findClose v p
+  --       let len = bitLength v
+  --       [findClose rmm i | i <- [1..len]] `shouldBe `[findClose v i | i <- [1..len]]
+  -- it "findClose should return the same result over all counts" $ do
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       forAll (choose (1, bitLength v)) $ \p -> do
+  --         let !rmm = mkRangeMinMax v
+  --         findClose rmm p `shouldBe` findClose v p
   -- it "nextSibling should return the same result" $ do
   --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
   --     let !rmm = mkRangeMinMax v
   --     nextSibling rmm 0 `shouldBe` nextSibling v 0
   -- it "nextSibling should return the same result over all counts" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     forAll (choose (1, bitLength v)) $ \p -> do
-  --       let !rmm = mkRangeMinMax v
-  --       nextSibling rmm p `shouldBe` nextSibling v p
-  -- it "Pass" $ do
-  --   True `shouldBe` True
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       forAll (choose (1, bitLength v)) $ \p -> do
+  --         let !rmm = mkRangeMinMax v
+  --         nextSibling rmm p `shouldBe` nextSibling v p
   -- it "rangeMinMaxBP should match" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     let !rmm1 = mkRangeMinMax   v
-  --     let !rmm2 = mkRangeMinMax2  v
-  --     rangeMinMax2BP rmm2 `shouldBe` rangeMinMaxBP rmm1
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       let !rmm1 = mkRangeMinMax   v
+  --       let !rmm2 = mkRangeMinMax2  v
+  --       rangeMinMax2BP rmm2 `shouldBe` rangeMinMaxBP rmm1
   -- it "rangeMinMaxL0Excess should match" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     let !rmm1 = mkRangeMinMax   v
-  --     let !rmm2 = mkRangeMinMax2  v
-  --     rangeMinMax2L0Excess rmm2 `shouldBe` rangeMinMaxL0Excess rmm1
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       let !rmm1 = mkRangeMinMax   v
+  --       let !rmm2 = mkRangeMinMax2  v
+  --       rangeMinMax2L0Excess rmm2 `shouldBe` rangeMinMaxL0Excess rmm1
   -- it "rangeMinMaxL0Min should match" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     let !rmm1 = mkRangeMinMax   v
-  --     let !rmm2 = mkRangeMinMax2  v
-  --     rangeMinMax2L0Min rmm2 `shouldBe` rangeMinMaxL0Min rmm1
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       let !rmm1 = mkRangeMinMax   v
+  --       let !rmm2 = mkRangeMinMax2  v
+  --       rangeMinMax2L0Min rmm2 `shouldBe` rangeMinMaxL0Min rmm1
   -- it "rangeMinMaxL0Max should match" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     let !rmm1 = mkRangeMinMax   v
-  --     let !rmm2 = mkRangeMinMax2  v
-  --     rangeMinMax2L0Max rmm2 `shouldBe` rangeMinMaxL0Max rmm1
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       let !rmm1 = mkRangeMinMax   v
+  --       let !rmm2 = mkRangeMinMax2  v
+  --       rangeMinMax2L0Max rmm2 `shouldBe` rangeMinMaxL0Max rmm1
   -- it "rangeMinMaxL1Min should match" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     let !rmm1 = mkRangeMinMax   v
-  --     let !rmm2 = mkRangeMinMax2  v
-  --     rangeMinMax2L1Min rmm2 `shouldBe` rangeMinMaxL1Min rmm1
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       let !rmm1 = mkRangeMinMax   v
+  --       let !rmm2 = mkRangeMinMax2  v
+  --       rangeMinMax2L1Min rmm2 `shouldBe` rangeMinMaxL1Min rmm1
   -- it "rangeMinMaxL1Max should match" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     let !rmm1 = mkRangeMinMax   v
-  --     let !rmm2 = mkRangeMinMax2  v
-  --     rangeMinMax2L1Max rmm2 `shouldBe` rangeMinMaxL1Max rmm1
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       let !rmm1 = mkRangeMinMax   v
+  --       let !rmm2 = mkRangeMinMax2  v
+  --       rangeMinMax2L1Max rmm2 `shouldBe` rangeMinMaxL1Max rmm1
   -- it "rangeMinMaxL1Excess should match" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     let !rmm1 = mkRangeMinMax   v
-  --     let !rmm2 = mkRangeMinMax2  v
-  --     rangeMinMax2L1Excess rmm2 `shouldBe` rangeMinMaxL1Excess rmm1
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       let !rmm1 = mkRangeMinMax   v
+  --       let !rmm2 = mkRangeMinMax2  v
+  --       rangeMinMax2L1Excess rmm2 `shouldBe` rangeMinMaxL1Excess rmm1
   -- it "rangeMinMaxL2Min should match" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     let !rmm1 = mkRangeMinMax   v
-  --     let !rmm2 = mkRangeMinMax2  v
-  --     rangeMinMax2L2Min rmm2 `shouldBe` rangeMinMaxL2Min rmm1
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       let !rmm1 = mkRangeMinMax   v
+  --       let !rmm2 = mkRangeMinMax2  v
+  --       rangeMinMax2L2Min rmm2 `shouldBe` rangeMinMaxL2Min rmm1
   -- it "rangeMinMaxL2Max should match" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     let !rmm1 = mkRangeMinMax   v
-  --     let !rmm2 = mkRangeMinMax2  v
-  --     rangeMinMax2L2Max rmm2 `shouldBe` rangeMinMaxL2Max rmm1
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       let !rmm1 = mkRangeMinMax   v
+  --       let !rmm2 = mkRangeMinMax2  v
+  --       rangeMinMax2L2Max rmm2 `shouldBe` rangeMinMaxL2Max rmm1
   -- it "rangeMinMaxL2Excess should match" $ do
-  --   forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
-  --     let !rmm1 = mkRangeMinMax   v
-  --     let !rmm2 = mkRangeMinMax2  v
-  --     rangeMinMax2L2Excess rmm2 `shouldBe` rangeMinMaxL2Excess rmm1
+  --   quickCheckWith stdArgs { maxSuccess = maxSuccessDefault } $ do
+  --     forAll (vectorSizedBetween 1 maxVectorSize) $ \(ShowVector v) -> do
+  --       let !rmm1 = mkRangeMinMax   v
+  --       let !rmm2 = mkRangeMinMax2  v
+  --       rangeMinMax2L2Excess rmm2 `shouldBe` rangeMinMaxL2Excess rmm1
   -- describe "For example long bit string" $ do
   --   let v = fromBitTextByteString " \
   --     \ 01101101 01111100 10011111 01100101 11111100 01101111 00000000 00000000 10001010 11000000 01000010 01010010 01001101 01000101 00000000 00000000 \
@@ -123,30 +133,11 @@
   --     rangeMinMax2L0Max rmm2 `shouldBe` rangeMinMaxL0Max rmm1
   --   it "l1 max matches" $ do
   --     rangeMinMax2L1Max rmm2 `shouldBe` rangeMinMaxL1Max rmm1
-  --   it "l2 max matches" $ do
-  --     rangeMinMax2L2Max rmm2 `shouldBe` rangeMinMaxL2Max rmm1
+  --   -- it "l2 max matches" $ do
+  --   --   rangeMinMax2L2Max rmm2 `shouldBe` rangeMinMaxL2Max rmm1
   --   it "l0 min matches" $ do
   --     rangeMinMax2L0Min rmm2 `shouldBe` rangeMinMaxL0Min rmm1
   --   it "l1 min matches" $ do
   --     rangeMinMax2L1Min rmm2 `shouldBe` rangeMinMaxL1Min rmm1
   --   it "l2 min matches" $ do
-  --     putStrLn $ "--> data: "                 ++ show (BitShown (DVS.take 80 v))
-  --     putStrLn $ "--> rangeMinMaxAL0Min: "    ++ show (DVS.take 80 (rangeMinMaxL0Min     rmm1))
-  --     putStrLn $ "--> rangeMinMaxAL0Max: "    ++ show (DVS.take 80 (rangeMinMaxL0Max     rmm1))
-  --     putStrLn $ "--> rangeMinMaxAL0Excess: " ++ show (DVS.take 80 (rangeMinMaxL0Excess  rmm1))
-  --     putStrLn $ "--> rangeMinMaxBL0Min: "    ++ show (DVS.take 80 (rangeMinMax2L0Min    rmm2))
-  --     putStrLn $ "--> rangeMinMaxBL0Max: "    ++ show (DVS.take 80 (rangeMinMax2L0Max    rmm2))
-  --     putStrLn $ "--> rangeMinMaxBL0Excess: " ++ show (DVS.take 80 (rangeMinMax2L0Excess rmm2))
-  --     putStrLn $ "--> rangeMinMaxAL1Min: "    ++ show (DVS.take 80 (rangeMinMaxL1Min     rmm1))
-  --     putStrLn $ "--> rangeMinMaxAL1Max: "    ++ show (DVS.take 80 (rangeMinMaxL1Max     rmm1))
-  --     putStrLn $ "--> rangeMinMaxAL1Excess: " ++ show (DVS.take 80 (rangeMinMaxL1Excess  rmm1))
-  --     putStrLn $ "--> rangeMinMaxBL1Min: "    ++ show (DVS.take 80 (rangeMinMax2L1Min    rmm2))
-  --     putStrLn $ "--> rangeMinMaxBL1Max: "    ++ show (DVS.take 80 (rangeMinMax2L1Max    rmm2))
-  --     putStrLn $ "--> rangeMinMaxBL1Excess: " ++ show (DVS.take 80 (rangeMinMax2L1Excess rmm2))
-  --     putStrLn $ "--> rangeMinMaxAL2Min: "    ++ show (DVS.take 80 (rangeMinMaxL2Min     rmm1))
-  --     putStrLn $ "--> rangeMinMaxAL2Max: "    ++ show (DVS.take 80 (rangeMinMaxL2Max     rmm1))
-  --     putStrLn $ "--> rangeMinMaxAL2Excess: " ++ show (DVS.take 80 (rangeMinMaxL2Excess  rmm1))
-  --     putStrLn $ "--> rangeMinMaxBL2Min: "    ++ show (DVS.take 80 (rangeMinMax2L2Min    rmm2))
-  --     putStrLn $ "--> rangeMinMaxBL2Max: "    ++ show (DVS.take 80 (rangeMinMax2L2Max    rmm2))
-  --     putStrLn $ "--> rangeMinMaxBL2Excess: " ++ show (DVS.take 80 (rangeMinMax2L2Excess rmm2))
   --     rangeMinMax2L2Min rmm2 `shouldBe` rangeMinMaxL2Min rmm1
diff --git a/test/HaskellWorks/Data/BalancedParens/RangeMinMaxSpec.hs b/test/HaskellWorks/Data/BalancedParens/RangeMinMaxSpec.hs
--- a/test/HaskellWorks/Data/BalancedParens/RangeMinMaxSpec.hs
+++ b/test/HaskellWorks/Data/BalancedParens/RangeMinMaxSpec.hs
@@ -35,30 +35,30 @@
 
 spec :: Spec
 spec = describe "HaskellWorks.Data.BalancedParens.RangeMinMaxSpec" $ do
-  it "Skip tests" $ do
-    True `shouldBe` True
+  let defaultMaxSuccess = 5
   it "For a simple bit string can find close" $ do
     let v = fromBitTextByteString "11101111 10100101 01111110 10110010 10111011 10111011 00011111 11011100" :: DVS.Vector Word64
     let !rmm = mkRangeMinMax v
     findClose rmm 61 `shouldBe` findClose v 61
   it "findClose should return the same result" $ do
-    forAll (vectorSizedBetween 1 4) $ \(ShowVector v) -> do
-      let !rmm = mkRangeMinMax v
-      let len = bitLength v
-      [findClose rmm i | i <- [1..len]] `shouldBe `[findClose v i | i <- [1..len]]
+    quickCheckWith stdArgs { maxSuccess = defaultMaxSuccess } $ do
+      forAll (vectorSizedBetween 1 4) $ \(ShowVector v) -> do
+        let !rmm = mkRangeMinMax v
+        let len = bitLength v
+        [findClose rmm i | i <- [1..len]] `shouldBe `[findClose v i | i <- [1..len]]
   it "findClose should return the same result over all counts" $ do
-    quickCheckWith stdArgs { maxSuccess = 10 } $ do
+    quickCheckWith stdArgs { maxSuccess = defaultMaxSuccess } $ do
       forAll (vectorSizedBetween 1 factor) $ \(ShowVector v) -> do
         forAll (choose (1, bitLength v)) $ \p -> do
           let !rmm = mkRangeMinMax v
           findClose rmm p `shouldBe` findClose v p
   it "nextSibling should return the same result" $ do
-    quickCheckWith stdArgs { maxSuccess = 10 } $ do
+    quickCheckWith stdArgs { maxSuccess = defaultMaxSuccess } $ do
       forAll (vectorSizedBetween 1 factor) $ \(ShowVector v) -> do
         let !rmm = mkRangeMinMax v
         nextSibling rmm 0 `shouldBe` nextSibling v 0
   it "nextSibling should return the same result over all counts" $ do
-    quickCheckWith stdArgs { maxSuccess = 10 } $ do
+    quickCheckWith stdArgs { maxSuccess = defaultMaxSuccess } $ do
       forAll (vectorSizedBetween 1 factor) $ \(ShowVector v) -> do
         forAll (choose (1, bitLength v)) $ \p -> do
           let !rmm = mkRangeMinMax v
