anchor.diff:  
       {noreply, State#state{nodes=Merged}};
   
  -handle_cast({publish, Node}, State) ->
  +handle_cast({publish, Type, Node}, State) ->
       % publish current node set to everyone but `Node` and ourselves
       maps:fold(fun(K, _Info, _) when K /= Node ->
                         if K /= node() ->
  -                             lager:debug("publishing ~p to ~p", [Node, K]),
  -                             {statser_discoverer, K} ! {connect, Node};
  +                             lager:debug("publishing ~p to ~p [~p]", [Node, K, Type]),
  +                             {statser_discoverer, K} ! {Type, Node};
                            true -> ok
                         end,
  -                      lager:debug("publishing ~p to ~p", [K, Node]),
  -                      {statser_discoverer, Node} ! {connect, K};
  +                      lager:debug("publishing ~p to ~p [~p]", [K, Node, Type]),
  +                      {statser_discoverer, Node} ! {Type, K};
                    (_, _, _) -> ok
                 end, ok, State#state.nodes),
   
  
positive.code: %%--------------------------------------------------------------------
  handle_info({connect, Node}, State) ->
      {_, State0} = try_connect(Node, State),
      {noreply, State0};
  
  handle_info(persist, State) ->
  
negative.code:                     lager:info("disconnection from node ~p failed - local node is not alive", [Node])
              end,
  
              % publish removed/disconnected node
              gen_server:cast(self(), {publish, disconnect, Node}),
  
              Ns0 = maps:remove(Node, Ns),
              {true, schedule_persist_timer(State#state{nodes=Ns0})};
          {ok, _Info} ->
  