bisect backend.
diff --git a/rebar.config b/rebar.config
index f410118..b4a0172 100644
--- a/rebar.config
+++ b/rebar.config
@@ -1,6 +1,8 @@
 {deps, [
         {basho_stats, "",
-         {git, "https://github.com/knutin/basho_stats.git", {branch, "master"}}}
+         {git, "https://github.com/knutin/basho_stats.git", {branch, "master"}}},
+        {bisect, "",
+         {git, "https://github.com/knutin/bisect.git", {branch, "master"}}}
 %%        {erlang_murmurhash, "",
 %%         {git, "https://github.com/thekvs/erlang-murmurhash.git", {branch, "master"}}},
        ]}.
diff --git a/src/hyper_array.erl b/src/hyper_array.erl
index 5750b25..66291b7 100644
--- a/src/hyper_array.erl
+++ b/src/hyper_array.erl
@@ -7,9 +7,7 @@
     array:new([{size, M}, {fixed, true}, {default, 0}]).
 
 get(Index, A) ->
-    case catch array:get(Index, A) of
-        {'EXIT', {badarg, _}} ->
-            error_logger:info_msg("bad: index: ~p~n ~p~n", [Index, A]);
+    case array:get(Index, A) of
         0 ->
             undefined;
         Value ->
diff --git a/src/hyper_bisect.erl b/src/hyper_bisect.erl
new file mode 100644
index 0000000..532f690
--- /dev/null
+++ b/src/hyper_bisect.erl
@@ -0,0 +1,25 @@
+-module(hyper_bisect).
+-export([new/1, get/2, set/3, fold/3]).
+-behaviour(hyper_register).
+
+new(_P) ->
+    bisect:new(4, 1).
+
+get(Index, B) ->
+    case bisect:find(B, <<Index:32/integer>>) of
+        not_found ->
+            undefined;
+        <<Value:8/integer>> ->
+            {ok, Value}
+    end.
+
+
+set(Index, Value, B) ->
+    bisect:insert(B, <<Index:32/integer>>, <<Value:8/integer>>).
+
+
+fold(F, Acc, B) ->
+    InterfaceF = fun (<<Index:32/integer>>, <<Value:8/integer>>, A) ->
+                         F(Index, Value, A)
+                 end,
+    bisect:foldl(B, InterfaceF, Acc).