anchor.diff:           service_up/3,
            service_up/4,
            check_health/1,
  +         suspend_health_checks/0,
  +         resume_health_checks/0,
            service_down/1,
            service_down/2,
            node_up/0,
  
positive.code: -record(state, { status = up,
                   services = [],
                   health_checks = [],
                   peers = [],
                   avsn = 0,
                   bcast_tref,
  
negative.code: start_health_check(_Service, Check) ->
      Check.
  
  health_check_result(CheckPid, Result) ->
      gen_server:cast(?MODULE, {health_check_result, CheckPid, Result}).
  
  next_health_tref(_, infinity, _) ->
      undefined;
  next_health_tref(N, V, Service) ->
      Time = determine_time(N, V),
      erlang:send_after(Time, self(), {check_health, Service}).
  
  all_health_fsms(Msg, Healths) ->
      [begin
           {ok, C1} = health_fsm(Msg, S, C),
           {S, C1}
       end || {S, C} <- Healths].
  
  determine_time(Failures, BaseInterval) when Failures < 4 ->
      BaseInterval;
  
  