diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,30 @@
-MIT License
+Copyright John Ky (c) 2016
 
-Copyright (c) 2016 John Ky
+All rights reserved.
 
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Author name here nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/app/Main.hs b/app/Main.hs
deleted file mode 100644
--- a/app/Main.hs
+++ /dev/null
@@ -1,4 +0,0 @@
-module Main where
-
-main :: IO ()
-main = putStrLn "Hello world"
diff --git a/bench/Main.hs b/bench/Main.hs
--- a/bench/Main.hs
+++ b/bench/Main.hs
@@ -10,7 +10,6 @@
 import           HaskellWorks.Data.Bits.Broadword
 import           HaskellWorks.Data.Bits.FromBitTextByteString
 import           HaskellWorks.Data.Naive
-import           HaskellWorks.Data.RankSelect.Base
 
 setupEnvVector :: Int -> IO (DVS.Vector Word64)
 setupEnvVector n = return $ DVS.fromList (take n (cycle [maxBound, 0]))
@@ -64,11 +63,6 @@
     ]
   , env (setupEnvVector 1000000) $ \bv -> bgroup "RangeMinMax"
     [ bench "findClose"   (nf   (map (findClose bv)) [0, 1000..10000000])
-    ]
-  , env (setupEnvVector 1000000) $ \bv -> bgroup "Rank"
-    [ bench "Rank - Once"   (whnf (rank1    bv) 1)
-    , bench "Select - Once" (whnf (select1  bv) 1)
-    , bench "Rank - Many"   (nf   (map (rank1 bv)) [0, 1000..10000000])
     ]
   ]
 
diff --git a/hw-balancedparens.cabal b/hw-balancedparens.cabal
--- a/hw-balancedparens.cabal
+++ b/hw-balancedparens.cabal
@@ -1,9 +1,9 @@
 name:                   hw-balancedparens
-version:                0.0.0.1
-synopsis:               Conduits for tokenizing streams.
+version:                0.0.0.2
+synopsis:               Balanced parentheses
 description:            Please see README.md
 homepage:               http://github.com/haskell-works/hw-balancedparens#readme
-license:                MIT
+license:                BSD3
 license-file:           LICENSE
 author:                 John Ky
 maintainer:             newhoggy@gmail.com
@@ -13,14 +13,6 @@
 extra-source-files:     README.md
 cabal-version:          >= 1.22
 
-executable hw-balancedparens-example
-  hs-source-dirs:       app
-  main-is:              Main.hs
-  ghc-options:          -threaded -rtsopts -with-rtsopts=-N -O2 -Wall -msse4.2
-  build-depends:        base                          >= 4          && < 5
-                      , hw-balancedparens
-  default-language:     Haskell2010
-
 library
   hs-source-dirs:       src
   exposed-modules:      HaskellWorks.Data.BalancedParens
@@ -43,8 +35,6 @@
                       , hw-excess                     >= 0.0.0.1
                       , hw-prim                       >= 0.3.0.5
                       , hw-rankselect-base            >= 0.1.0.0
-                      , hw-string-parse               >= 0.0.0.2
-                      , safe
                       , vector
 
   default-language:     Haskell2010
@@ -60,9 +50,9 @@
                       , HaskellWorks.Data.BalancedParens.SimpleSpec
   build-depends:        base                          >= 4          && < 5
                       , hspec
+                      , hw-balancedparens
                       , hw-bits                       >= 0.3.0.0
                       , hw-prim                       >= 0.3.0.5
-                      , hw-balancedparens
                       , hw-rankselect-base            >= 0.1.0.0
                       , QuickCheck
                       , vector
@@ -80,12 +70,8 @@
     GHC-Options: -O2 -Wall -msse4.2
     Default-Language: Haskell2010
     Build-Depends:      base                          >= 4          && < 5
-                      , bytestring
-                      , conduit
                       , criterion
+                      , hw-balancedparens
                       , hw-bits                       >= 0.3.0.0
                       , hw-prim                       >= 0.3.0.5
-                      , hw-balancedparens
-                      , hw-rankselect-base            >= 0.1.0.0
-                      , mmap
                       , vector
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
@@ -7,11 +7,11 @@
 
 import qualified Data.Vector.Storable                                     as DVS
 import           Data.Word
--- import           HaskellWorks.Data.BalancedParens
--- import           HaskellWorks.Data.BalancedParens.RangeMinMax
--- import           HaskellWorks.Data.Bits.BitLength
+import           HaskellWorks.Data.BalancedParens
+import           HaskellWorks.Data.BalancedParens.RangeMinMax
+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
 
@@ -37,26 +37,29 @@
 spec = describe "HaskellWorks.Data.BalancedParens.RangeMinMaxSpec" $ 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
-  -- 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 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
-  --   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
-  --   forAll (vectorSizedBetween 1 factor) $ \(ShowVector v) -> do
-  --     forAll (choose (1, bitLength v)) $ \p -> do
-  --       let !rmm = mkRangeMinMax v
-  --       nextSibling rmm p `shouldBe` nextSibling v p
+  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
+    quickCheckWith stdArgs { maxSuccess = 10 } $ 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
+      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
+      forAll (vectorSizedBetween 1 factor) $ \(ShowVector v) -> do
+        forAll (choose (1, bitLength v)) $ \p -> do
+          let !rmm = mkRangeMinMax v
+          nextSibling rmm p `shouldBe` nextSibling v p
