anchor.diff:  
   -spec send_vivaldi_errors() -> ok.
   send_vivaldi_errors() ->
  -    DHTNodeGroups = pid_groups:groups_with(dht_node),
  +    DHTNodeGroups = case pid_groups:groups_with(dht_node) of
  +                        failed ->
  +                            [];
  +                        X -> X
  +                    end,
       lists:foreach(fun (Group) ->
                             PID = pid_groups:pid_of(Group, vivaldi),
                             Envelope = comm:reply_as(comm:this(), 3,
  -                                                   {ganglia_vivaldi_response, Group, '_'}),
  +                                                   {ganglia_vivaldi_confidence, Group, '_'}),
                             comm:send_local(PID, {get_coordinate, Envelope})
                     end, DHTNodeGroups),
       ok.
  
positive.code:     % Query DHT Nodes for load, let them reply to the on handler ganglia_dht_node_reply
      % The FD tells us if a node is down
      lists:foreach(fun (PID) ->
                            %% TODO FD
                            Envelope = comm:reply_as(comm:this(), 3,
                                                     {ganglia_dht_load_aggregation, AggId , '_'}),
                            comm:send_local(PID, {get_node_details, Envelope, [load]})
                    end, DHTNodes),
      set_agg_pending(length(DHTNodes), State).
  
negative.code:         true -> State
      end;
  
  % @doc handler for message from failure detector
  %      if a node crashes before sending out the load data
  %      we ignore its load information
  on({crash, _PID, {ganglia, AggId}}, State) ->
      ?TRACE("Node failed~n",[]),
      CurAggId = get_agg_id(State),
      if
          AggId == CurAggId ->
              Pending = get_agg_pending(State),
              set_agg_pending(Pending - 1, State);
          true ->
              State
      end;
  
  % @doc handler for messages from the vivaldi process
  %      reporting its confidence
  on({ganglia_vivaldi_confidence, DHTName, Msg}, State) ->
      {vivaldi_get_coordinate_response, _, Confidence} = Msg,
      _ = gmetric(both, lists:flatten(io_lib:format("vivaldi_confidence_~s", [DHTName])), "float", Confidence, "Confidence"),
      State.
  
  send_general_metrics() ->
  