anchor.diff:  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()}.
  
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:               {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) ->
  