          {@nil_value, "", ""}
        [{_key, {_, {value, [{entry_clock, ^rev}|_]}}}] ->
          {value, entry_clock, rev}
-       [{_key, {_, {_, history}}}] ->
-         case Enum.find(history, fn({entry_clock, _}) -> 
-                                                         entry_clock == rev or
-                                                         ITC.decode(entry_clock) |>
-                                                         ITC.le(ITC.decode(rev))
-                                                     end) do
+       [{_key, {_, {value, [^rev|_]}}}] ->
+         {value, rev, rev}
+       [{_key, {value, {_, history}}}] ->
+         case Enum.find(history, fn(c) ->
+                                     case c do
+                                       {entry_clock, _} -> :ok
+                                       entry_clock -> :ok
+                                     end
+                                     entry_clock == rev or
+                                     ITC.decode(entry_clock) |>
+                                     ITC.le(ITC.decode(rev))
+                                 end) do
            {entry_clock, txn_rev} ->
              [{_, {value, _serialized}}] = ETS.lookup(staging, {key, entry_clock})
              {value, entry_clock, txn_rev}
+           txn_rev when is_binary(txn_rev) ->
+             {value, txn_rev, txn_rev}
            nil ->
              if page == 0 do
                {@nil_value, "", ""}

     end
   end

 end
                       v
                     end
                   end)
       history_entry = history_entry(entry_clock, clock)
       if page_ctr <= @object_page_size do
         ETS.insert(tab, {{key, page}, {page_ctr + 1, {value, [history_entry|history]}}})
       else
         # allocate a new page
         ETS.insert(tab, [{key, page + 1},
                          {{key, page + 1}, {1, {value, [history_entry]}}}])
       end
     end
     ETS.insert(commit_tab, {{:C, clock}, {MsgPack.pack(commit_object), [clock]}})
