anchor.diff:  -export([start_link/1, init/1, on/2]).
   
   % state of the module
  --type state() :: [comm:mypid()].
  +-type state() :: [{MonitorRef::reference(), DhtNode::comm:mypid()}].
   
   % accepted messages the module
   -type message() :: {get_dht_nodes, ReplyPid :: comm:mypid()} |
  
positive.code: 
  % @doc registers a dht node
  on({register_dht_node, Pid}, State) ->
      [comm:make_global(Pid) | State];
  
  % @doc de-registers a dht node
  on({deregister_dht_node, Pid}, State) ->
      [Node || Node <- State, Node /= comm:make_global(Pid)];
  
  % @doc replies with the list of registered dht nodes
  on({get_dht_nodes, Pid}, State) ->
      case comm:is_valid(Pid) of
          true ->
              comm:send(Pid, {get_dht_nodes_response, State});
          false ->
              ok
      end,
  
negative.code:          end || Child <- Childs],
      ok.
  
  %% @doc Sends a register message to a running service_per_vm to register a
  %%      local(!) dht_node process.
  -spec register_dht_node(comm:mypid()) -> ok.
  register_dht_node(Pid) ->
      case get_service() of
          failed  -> ok;
          Service -> comm:send_local(Service, {register_dht_node, Pid})
      end.
  
  %% @doc Sends a deregister message to a running service_per_vm to remove a
  %%      local(!) dht_node process.
  -spec deregister_dht_node(comm:mypid()) -> ok.
  deregister_dht_node(Pid) ->
      case get_service() of
          failed  -> ok;
  