anchor.diff:  handle_info(_Info, State) -> {noreply, State}.
   
   handle_call({join_node, Node}, {_, _From},
  -            State = #membership{ptable=Table}) ->
  +            State = #membership{ptable = Table}) ->
     ets:delete_all_objects(Table),
     error_logger:info_msg("~p is joining the cluster.~n", [node(_From)]),
     NewState = int_join_node(Node, State),
  
positive.code:   P = partition:map_partitions(Partitions, Nodes),
    ?infoFmt("removing node ~p~n", [OldNode]),
    #membership{
      partitions=P,
      version = vclock:increment(pid_to_list(self()), Version),
      node=Node,
      nodes=Nodes,
      gossip=Gossip
    }.
  
  int_partitions_for_node(Node, State, master) ->
    Partitions = State#membership.partitions,
    {Matching,_} = lists:partition(fun({N,_}) -> N == Node end, Partitions),
    lists:map(fun({_,P}) -> P end, Matching);
  
  int_partitions_for_node(Node, State, all) ->
    %%_Partitions = State#membership.partitions,
  
negative.code: int_join_node(NewNode, #membership{node=Node,partitions=Partitions,
                                     version=Version,nodes=OldNodes,
                                     gossip=Gossip}) ->
    Nodes = lists:usort([NewNode | OldNodes]),
    P = partition:map_partitions(Partitions, Nodes),
    ?infoFmt("int join setting node to ~p", [Node]),
    #membership{
      partitions = P,
      version = vclock:increment(pid_to_list(self()), Version),
      node = Node,
      nodes = Nodes,
      gossip = Gossip}.
  
  int_remove_node(OldNode, #membership{node=Node,partitions=Partitions,
                                       version=Version,nodes=OldNodes,
  