anchor.diff:  	
   nodes_for_partition(Partition) ->
     gen_server:call(membership, {nodes_for_partition, Partition}).
  +	
  +remove_node(Node) ->
  +  gen_server:call(membership, {remove_node, Node}).
   	
   nodes_for_key(Key) ->
     gen_server:call(membership, {nodes_for_key, Key}).
  
positive.code: init([Node, Nodes]) ->
    process_flag(trap_exit, true), % this is for the gossip server which tags along
    Config = configuration:get_config(),
    State = try_join_into_cluster(Node, create_or_load_state(Node, Nodes, Config, ets:new(partitions, [set, public]))),
    ?infoMsg("Saving membership data.~n"),
    save_state(State),
    ?infoMsg("Loading storage servers.~n"),
  
negative.code: -behaviour(gen_server).
  
  %% API
  -export([start_link/3, start_link/2, join_node/2, remove_node/1, nodes_for_partition/1, replica_nodes/1, servers_for_key/1, nodes_for_key/1, partitions/0, nodes/0, state/0, partitions_for_node/2, fire_gossip/1, partition_for_key/1, stop/0, stop/1, range/1, status/0, stop_gossip/0, remap/1]).
  
  %% gen_server callbacks
  -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
  