anchor.diff:      rempid_set_pending_demonitor(E1, true).
   
   -spec state_new(comm:mypid(), [rempid()],
  -                erlang_timestamp(), erlang_timestamp(), atom()) -> state().
  -state_new(RemoteHBS, RemotePids, LastPong, CrashedAfter,Table) ->
  +                erlang_timestamp(), erlang_timestamp(), pdb:tableid()) -> state().
  +state_new(RemoteHBS, RemotePids, LastPong, CrashedAfter, Table) ->
       {RemoteHBS, RemotePids, LastPong, CrashedAfter, Table, []}.
   
   -spec state_get_rem_hbs(state())    -> comm:mypid().
  
positive.code: start_link(ServiceGroup, RemotePid) ->
      RemoteFDPid = comm:get(fd, RemotePid),
      Name = lists:flatten(io_lib:format("fd <-> ~p", [RemoteFDPid])),
      gen_component:start_link(?MODULE, fun ?MODULE:on/2, [RemotePid],
                               [%% {wait_for_init}, %% when using protected ets table
                                {pid_groups_join_as, ServiceGroup, Name}]).
  
  -spec init([pid() | comm:mypid()]) -> state().
  init([RemotePid]) ->
      ?TRACE("fd_hbs init: RemotePid ~p~n", [RemotePid]),
      TableName = pdb:new(?MODULE, [set]), %% debugging: ++ [protected]),
      RemoteFDPid = comm:get(fd, RemotePid),
  
negative.code:        [rempid()],  %% subscribed rem. pids + ref counting
         erlang_timestamp(),  %% local time of last pong arrival
         erlang_timestamp(),  %% remote is crashed if no pong arrives until this
         pdb:tableid(),       %% ets table name
         %% locally erlang:monitored() pids for a remote hbs:
         [{comm:mypid(), reference()}]
       }).
  