anchor.diff:      % let's try to register ourselves
       case ets:insert_new(metrics, {Path, self()}) of
           true ->
  -            % we could register ourself, let's continue
  -            % TODO: not quite sure of this additional `prepare` step
  -            %       we could do that in here as well...
  +            % we could register ourself, let's continue with preparation
               gen_server:cast(self(), {prepare, Metadata}),
               {ok, set_heartbeat(#state{path=Path})};
           false ->
  
positive.code:     {noreply, set_heartbeat(NewState)};
  
  handle_cast(check_heartbeat, #state{path=Path, heartbeat=HB} = State) ->
      % schedule new timer
      case State#state.metadata of
          #whisper_metadata{archives=[A | _]} ->
              Now = erlang:system_time(second),
              IntervalMillis = A#whisper_archive.seconds * ?INACTIVITY_FACTOR,
              Expired = Now - IntervalMillis,
  
              if HB < Expired ->
                     DateTime = statser_util:epoch_seconds_to_datetime(HB),
                     lager:info("stopping metrics handler for '~s' due to inactivity [last seen ~s]", [Path, DateTime]),
  
                     % TODO:
                     % as stopping of the metric-handler usually goes along
                     % with the final flushing of the cached values we should
                     % consider using the rate-limiter as well
                     {stop, normal, State};
                 true -> {noreply, State}
              end;
          _Otherwise ->
              {noreply, State}
      end;
  
negative.code: 
  request_flush() ->
      gen_server:cast(update_limiter, {drain, flush_cache, self()}).
  
  
  heartbeat_expired(#state{heartbeat=HB, metadata=#whisper_metadata{archives=[A | _]}}) ->
      Now = erlang:system_time(second),
      IntervalMillis = A#whisper_archive.seconds * ?INACTIVITY_FACTOR,
      Expired = Now - IntervalMillis,
      HB < Expired;
  heartbeat_expired(_State) -> false.
  
  
  get_metadata(State) ->
  