anchor.diff:  
   -record(state, {store, type, id, previous}).
   
  --define(ID, <<"lasp_riak_keylist_program">>).
   -define(CORE, lasp_core).
   -define(TYPE, riak_dt_orset).
   
   %% @doc Initialize an or-set as an accumulator.
   init(Store) ->
  -    {ok, Id} = ?CORE:declare(?ID, ?TYPE, Store),
  +    Id = list_to_binary(atom_to_list(?MODULE)),
  +    {ok, Id} = ?CORE:declare(Id, ?TYPE, Store),
       {ok, #state{store=Store, id=Id}}.
   
   %% @doc Notification from the system of an event.
  -process(Object, Reason, Idx, #state{store=Store, id=Id}=State) ->
  +process(Object, Reason, Idx, State) ->
       Key = riak_object:key(Object),
  +    Metadata = riak_object:get_metadata(Object),
       case Reason of
           put ->
  -            {ok, _} = ?CORE:update(Id, {add, Key}, Idx, Store),
  +            ok = remove_entries_for_key(Key, Idx, State),
  +            ok = add_entry(Key, Metadata, Idx, State),
               ok;
           delete ->
  -            {ok, _} = ?CORE:update(Id, {remove, Key}, Idx, Store),
  +            ok = remove_entries_for_key(Key, Idx, State),
               ok;
           handoff ->
  -            %% Do nothing, right now.
               ok
       end,
       {ok, State}.
  
positive.code:     Sum = lists:foldl(fun(X, Acc) -> ?TYPE:merge(X, Acc) end, Value, Outputs),
      {ok, Sum}.
  
  
negative.code: 
  %% @doc Return the result from a merged response
  value(Merged) ->
      {ok, [K || {K, _} <- ?TYPE:value(Merged)]}.
  
  %% @doc Given a series of outputs, take each one and merge it.
  merge(Outputs) ->
  