anchor.diff:      end;
   
   on_init({new_node_id, Id}, State) ->
  -    tx_tm = state_get_role(State),
  +    %% only in tx_tm not in rtm processes!
  +    ?ASSERT(tx_tm =:= state_get_role(State)),
       case state_get_RTMs(State) of
  -        [] -> State;
  +        [] ->
  +            %% new_node_id before first get_node_details: delay this info.
  +            comm:send_local(self(), {new_node_id, Id}),
  +            State;
           [_|_] = RTMs ->
  +            %% tx_tm processes have always #replicas entries here,
  +            %% crashed rtms are listed as 'unknown' (so using
  +            %% lists:zip is safe here)
               IDs = ?RT:get_replica_keys(Id),
               NewRTMs = [ set_rtmkey(R, I) || {R, I} <- lists:zip(RTMs, IDs) ],
               state_set_RTMs(State, NewRTMs)
  
positive.code: %% accept RTM updates
  on({get_rtm_reply, InKey, InPid, InAcceptor}, State) ->
      ?TRACE_RTM_MGMT("tx_tm_rtm:on:get_rtm_reply in Pid ~p for Pid ~p and State ~p~n", [self(), InPid, _State]),
      tx_tm = state_get_role(State),
      RTMs = state_get_RTMs(State),
      NewRTMs = rtms_upd_entry(RTMs, InKey, InPid, InAcceptor),
      rtms_of_same_dht_node(NewRTMs),
  
negative.code: 
  on_init({get_rtm_reply, InKey, InPid, InAcceptor}, State) ->
      ?TRACE_RTM_MGMT("tx_tm_rtm:on_init:get_rtm_reply in Pid ~p for Pid ~p State ~p~n", [self(), InPid, _State]),
      %% only in tx_tm not in rtm processes!
      ?ASSERT(tx_tm =:= state_get_role(State)),
      RTMs = state_get_RTMs(State),
      NewRTMs = rtms_upd_entry(RTMs, InKey, InPid, InAcceptor),
      case lists:keymember(unknown, 2, NewRTMs) of %% filled all entries?
  