anchor.diff:      % put ourselves into the nodes as well
       Me = #node_info{node=node(), last_seen=statser_util:seconds(), state=me},
       Nodes = maps:put(node(), Me, maps:new()),
  -    {ok, #state{nodes=Nodes}}.
  +
  +    gen_server:cast(self(), prepare),
  +
  +    State = #state{nodes=Nodes},
  +    {ok, State}.
   
   %%--------------------------------------------------------------------
   %% @private
  
positive.code:          terminate/2,
           code_change/3]).
  
  -record(state, {
            nodes :: #{node() => node_info()}
           }).
  
  %%%===================================================================
  
negative.code: %%                                  {stop, Reason, State}
  %% @end
  %%--------------------------------------------------------------------
  handle_cast(prepare, State) ->
      KnownNodes = load_nodes(),
  
      lager:info("discoverer: loaded ~p configured nodes from persisted '~s' file",
                 [maps:size(KnownNodes), ?PERSIST_FILE]),
  
      % merge loaded nodes with 'current' ones
      Merged = maps:fold(fun(N, Info, Nodes) when N /= node() ->
                                 % TODO: trigger node discovery/connection
                                 maps:put(N, Info, Nodes);
                            (_N, _Info, Nodes) -> Nodes
                         end, State#state.nodes, KnownNodes),
  
      {noreply, State#state{nodes=Merged}};
  
  handle_cast({publish, Node}, State) ->
      % publish current node set to everyone but `Node` and ourselves
      maps:fold(fun(K, _Info, _) when K /= Node ->
  