anchor.diff:  on({pong, RemHBSSubscriber, RemoteDelay}, State) ->
       ?TRACE("FD: pong, ~p~n", [RemHBSSubscriber]),
       forward_to_hbs(RemHBSSubscriber, {pong_via_fd, RemHBSSubscriber, RemoteDelay}),
  +    State;
  +
  +on({add_subscriber_via_fd, Subscriber, WatchedPid, Cookie}, State) ->
  +    ?TRACE("FD: subscribe ~p to ~p (cookie: ~p)~n", [Subscriber, WatchedPid, Cookie]),
  +    forward_to_hbs(WatchedPid, {add_subscriber, Subscriber, WatchedPid, Cookie}),
  +    State;
  +
  +on({del_subscriber_via_fd, Subscriber, WatchedPid, Cookie}, State) ->
  +    ?TRACE("FD: unsubscribe ~p to ~p (cookie: ~p)~n", [Subscriber, WatchedPid, Cookie]),
  +    forward_to_hbs(WatchedPid, {del_subscriber, Subscriber, WatchedPid, Cookie}),
       State;
   
   on({add_watching_of_via_fd, Subscriber, Pid}, State) ->
  
positive.code: -spec unsubscribe(comm:mypid() | [comm:mypid()], cookie()) -> ok.
  unsubscribe([], _Cookie)         -> ok;
  unsubscribe(GlobalPids, Cookie) when is_list(GlobalPids) ->
      _ = [begin
               HBPid = get_hbs(Pid),
               comm:send_local(HBPid, {del_subscriber, self(), Pid, Cookie})
           end
           || Pid <- GlobalPids],
      ok;
  
negative.code: -spec init([]) -> state().
  init([]) ->
      % local heartbeat processes
      _ = pdb:new(fd_hbs, [set, protected, named_table]),
      ok.
  
  %% @private
  -spec on(comm:message(), state()) -> state().
  on({hbs_finished, RemoteWatchedPid}, State) ->
      pdb:delete(comm:get(fd, RemoteWatchedPid), fd_hbs),
      State;
  
  on({subscribe_heartbeats, Subscriber, TargetPid}, State) ->
      %% we establish the back-direction here, so we subscribe to the
      %% subscriber and add the TargetPid to the local monitoring.
      ?TRACE("FD: subscribe_heartbeats~n", []),
      SubscriberFDPid = comm:get(fd, Subscriber),
      HBPid = case pdb:get(SubscriberFDPid, fd_hbs) of
                  undefined -> start_and_register_hbs(SubscriberFDPid);
                  Res -> element(2, Res)
              end,
      comm:send_local(HBPid, {add_watching_of, TargetPid}),
      comm:send(Subscriber, {update_remote_hbs_to, comm:make_global(HBPid)}, ?SEND_OPTIONS),
      State;
  