anchor.diff:      %%                        end, State, listwithalltids),
       State;
   
  +on({new_node_id, Id}, {RTMs, TableName, tx_tm, LAcceptor, GLLearner}) ->
  +    IDs = ?RT:get_replica_keys(Id),
  +    NewRTMs = [ set_rtmkey(R, I) || {R, I} <- lists:zip(RTMs, IDs) ],
  +    {NewRTMs, TableName, tx_tm, LAcceptor, GLLearner};
   %% periodic RTM update
   on({update_RTMs},
      {RTMs, _TableName, tx_tm, _LAcceptor, _GLLearner} = State) ->
  
positive.code:               {NewRTMs, TableName, tx_tm, LAcceptor, GLLearner}, on);
          _ -> {NewRTMs, TableName, tx_tm, LAcceptor, GLLearner, QueuedMessages}
      end;
  
  on_init({tx_tm_rtm_commit, _Client, _ClientsID, _TransLog} = Msg,
          {RTMs, TableName, tx_tm, LAcceptor, GLLearner, QueuedMessages} = _State) ->
  
negative.code:     %% TableName = pdb:new(?MODULE, [set, private]),
      LAcceptor = get_my(Role, acceptor),
      GLLearner = comm:make_global(get_my(Role, learner)),
      %% start getting rtms and maintain them.
      case Role of
          tx_tm ->
              comm:send_local(pid_groups:get_my(dht_node),
                              {get_node_details, comm:this(), [node]}),
              State = {_RTMs = [], TableName, Role, LAcceptor, GLLearner, msg_queue:new()},
              %% subscribe to id changes
              rm_loop:subscribe(self(), ?MODULE,
                                fun rm_loop:subscribe_dneighbor_change_filter/2,
                                fun ?MODULE:rm_send_update/4, inf),
              gen_component:change_handler(State, on_init);
          _ -> {_RTMs = [], TableName, Role, LAcceptor, GLLearner}
      end.
  