anchor.diff:  %%% API
   %%%----------------------------------------------------------------------
   
  -start_link() ->  
  -  gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
  +start_link() -> start_link(node()).
  +start_link(Seed) -> gen_server:start_link({local, ?MODULE}, ?MODULE, [Seed], []).
   
   stop() ->
     gen_server:cast(?SERVER, {stop}).
  
positive.code: update_node_pings() ->
    AllNodes = ets:match(nodes, '$1'),
    lists:map(fun([{Key, Node}]) ->
      case timer:tc(net_adm, ping, [Node#node.name]) of
        {Time, pong} -> ets:insert(nodes, {Key, Node#node{ping_distance = Time}});
        {_Time, pang} -> ets:delete(nodes, Key)
      end
    end, AllNodes).
  
  
negative.code: %%          ignore               |
  %%          {stop, Reason}
  %%----------------------------------------------------------------------
  init([Seed]) ->
    process_flag(trap_exit, true),  
    LocalHost = host:myip(),
    
    Opts = [named_table, set],
    ets:new(nodes, Opts),
    
    net_adm:ping(Seed),
    
    % Add all nodes this router knows about
    lists:map(fun(N) -> add_node_to_node_list(N) end, nodes()),
    
  