anchor.diff:      %% Figure 2c: I think this algorithm is not correct, but we'll see.
   
       Store = write(Key, Value, Store0),
  -    lager:info("~p: node ~p received forwarded write for key ~p with value ~p", [?MODULE, node(), Key, Value]),
  +    partisan_logger:info("~p: node ~p received forwarded write for key ~p with value ~p", [?MODULE, node(), Key, Value]),
   
       %% Send backup message to backups.
       lists:foreach(fun(Backup) -> psend(Backup, {backup, From, Key, Value}) end, Backups),
  
positive.code: 
  start_link() ->
      gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
  
  %% @doc Notifies us of membership update.
  update(LocalState0) ->
  
negative.code: handle_info({collaborate, {FromPid, FromRequestId}=From, SourceNode, Key, Value}, #state{membership=[_Primary, _Collaborator | Backups], store=Store0}=State) ->
      %% Write value locally.
      Store = write(Key, Value, Store0),
      partisan_logger:info("~p: node ~p storing updated value key ~p value ~p", [?MODULE, node(), Key, Value]),
  
      %% On ack, reply to caller.
      psend(FromPid, {response, FromRequestId, ok}),
  
      %% Send write acknowledgement.
      psend(SourceNode, {collaborate_ack, From, Key, Value}),
      partisan_logger:info("~p: node ~p acknowledging value for key ~p value ~p", [?MODULE, node(), Key, Value]),
  
      %% Send backup message to backups.
      lists:foreach(fun(Backup) -> psend(Backup, {backup, From, Key, Value}) end, Backups),
  