anchor.diff:                {NewRTMs, TableName, tx_tm, LAcceptor, GLLearner}, on);
           _ -> {NewRTMs, TableName, tx_tm, LAcceptor, GLLearner, QueuedMessages}
       end;
  +
  +on_init({new_node_id, Id}, {RTMs, TableName, tx_tm, LAcceptor, GLLearner, Queue}) ->
  +    IDs = ?RT:get_replica_keys(Id),
  +    NewRTMs = [ set_rtmkey(R, I) || {R, I} <- lists:zip(RTMs, IDs) ],
  +    {NewRTMs, TableName, tx_tm, LAcceptor, GLLearner, Queue};
   
   on_init({tx_tm_rtm_commit, _Client, _ClientsID, _TransLog} = Msg,
           {RTMs, TableName, tx_tm, LAcceptor, GLLearner, QueuedMessages} = _State) ->
  
positive.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()},
              gen_component:change_handler(State, on_init);
          _ -> {_RTMs = [], TableName, Role, LAcceptor, GLLearner}
      end.
  
negative.code: commit(TM, Client, ClientsID, TLog) ->
      Msg = {tx_tm_rtm_commit, Client, ClientsID, TLog},
      comm:send_local(TM, Msg).
  
  %% @doc Notifies the tx_tm_rtm of a changed node ID.
  -spec rm_send_update(Subscriber::pid(), Tag::?MODULE,
                       OldNeighbors::nodelist:neighborhood(),
                       NewNeighbors::nodelist:neighborhood()) -> ok.
  rm_send_update(Pid, ?MODULE, OldNeighbors, NewNeighbors) ->
      OldId = node:id(nodelist:node(OldNeighbors)),
      NewId = node:id(nodelist:node(NewNeighbors)),
      case OldId =/= NewId of
          true  -> comm:send_local(Pid, {new_node_id, NewId});
          false -> ok
      end.
  
  %% be startable via supervisor, use gen_component
  -spec start_link(pid_groups:groupname(), any()) -> {ok, pid()}.
  