anchor.diff:  
   
   node_delete(Node) ->
  -    Services = pubtab_get_services(Node),
  -    [pubtab_delete(Node, Service) || Service <- Services],
  +    Services = internal_get_services(Node),
  +    [internal_delete(Node, Service) || Service <- Services],
       ets:delete(?MODULE, Node),
       Services.
   
  
positive.code:     %% Broadcast our current status to new peers
      broadcast(Added, State#state { peers = NewPeers }).
  
  pubtab_delete(Node, Service) ->
      Svcs = pubtab_get_services(Node),
      ets:insert(?MODULE, {{by_node, Node}, Svcs -- [Service]}),
      Nds = pubtab_get_nodes(Service),
      ets:insert(?MODULE, {{by_service, Service}, Nds -- [Node]}).
  
  pubtab_insert(Node, Service) ->
      %% Remove Service & node before adding: avoid accidental duplicates
      Svcs = pubtab_get_services(Node) -- [Service],
      ets:insert(?MODULE, {{by_node, Node}, [Service|Svcs]}),
      Nds = pubtab_get_nodes(Service) -- [Node],
      ets:insert(?MODULE, {{by_service, Service}, [Node|Nds]}).
  
  pubtab_get_services(Node) ->
      case ets:lookup(?MODULE, {by_node, Node}) of
          [{{by_node, Node}, Ss}] ->
              Ss;
  
negative.code:     gen_server:call(?MODULE, services, infinity).
  
  services(Node) ->
      internal_get_services(Node).
  
  nodes(Service) ->
      internal_get_nodes(Service).
  
  
  %% ===================================================================
  