anchor.diff:  
   get_tree({?COMMIT_TUPLE_TAG, {_, Tree, _, _}}, StoreMod) ->
       StoreMod:find_object(Tree);
  -get_tree(?EMPTY_COMMIT, StoreMod) ->
  +get_tree(?EMPTY_COMMIT, _) ->
       error.
   
   reachable(From, StoreMod) ->
  
positive.code:     reachable_helper([From], StoreMod, gb_sets:empty()).
  
  reachable_helper([], _, Visited) ->
      Visited;
  reachable_helper([Hash|Hs], StoreMod, Visited) ->
      if gb_sets:is_member(Hash, Visited) ->
  	    reachable_helper(Hs, StoreMod, Visited);
         true -> 
  	    Commit = StoreMod:find_commit(Hash), 
  	    NewVisited = gb_sets:add(Hash, Visited),
  	    {ok, Parents} = get_parents(Commit),
  	    reachable_helper(append_unvisited(Parents, Hs, Visited), StoreMod, NewVisited)
      end.
  
  append_unvisited([], Acc, Visited) ->
      Acc;
  append_unvisited([H|Hs], Acc, Visited) ->
      if gb_sets:is_member(H, Visited) ->
  	    append_unvisited(Hs, Acc, Visited);
         true ->
  	    append_unvisited(Hs, [H|Acc], Visited)
      end.
  
  
negative.code:     ?EMPTY_COMMIT.
  
  new([_|_]=Parents, Tree, Changes, Meta) 
    when is_list(Changes), is_list(Parents), is_list(Meta) ->
      OrderedParents = lists:sort(Parents),
      OrderedMeta = orddict:from_list(Meta),
      {?COMMIT_TUPLE_TAG, {OrderedParents, Tree, Changes, OrderedMeta}}.
  
  store({?COMMIT_TUPLE_TAG, {_P,_T,_C,_M}}=Commit, StoreMod) ->
      {SHA, _} = wallaroo_db:hash_and_store(Commit, StoreMod, store_commit),
      SHA;
  store(?EMPTY_COMMIT=Commit, StoreMod) ->
      {SHA, _} = wallaroo_db:hash_and_store(Commit, StoreMod, store_commit),
      SHA.
  
  get_meta({?COMMIT_TUPLE_TAG, {_, _, _, Meta}}, Key) ->
  