anchor.diff:      end;
   
   %% nodes
  -handle_call(nodes, _From, #mem{nodes=NodeList} = State) ->
  -    {_,Nodes,_} = lists:unzip3(NodeList),
  -    {reply, {ok, Nodes}, State};
  +handle_call(nodes, _From, #mem{nodes=Nodes} = State) ->
  +    {_,NodeList,_} = lists:unzip3(Nodes),
  +    {reply, {ok, NodeList}, State};
   
   %% ignored call
   handle_call(Msg, _From, State) ->
  
positive.code:     try
          {ok, File} = find_latest_state_filename(Config),
          case file:consult(File) of
          {ok, #mem{}=State} -> State;
          _Else -> throw({error, bad_mem_state_file})
          end
      catch _:Error ->
          showroom_log:message(info, "membership: ~p", [Error]),
  
negative.code:     end;
  read_latest_state_file(_, _) ->
      nil.
  
  
  %% @doc save the state file to disk, with current timestamp.
  %%      thx to riak_ring_manager:do_write_ringfile/1
  save_state_file(State, Config) ->
      Dir = Config#config.directory,
      {{Year, Month, Day},{Hour, Minute, Second}} = calendar:universal_time(),
      TS = io_lib:format("~B~2.10.0B~2.10.0B~2.10.0B~2.10.0B~2.10.0B",
                         [Year, Month, Day, Hour, Minute, Second]),
      FN = Dir ++ "/" ++ ?STATE_FILE_PREFIX ++ "." ++ TS,
      ?debugFmt("~nFilename: ~s~n", [FN]),
      ok = filelib:ensure_dir(FN),
      {ok, File} = file:open(FN, [binary, write]),
      io:format(File, "~w.~n", [State]),
      file:close(File).
  
  
  %% @doc given Config and a list of ExtNodes, construct a {Pmap,Fullmap}
  