anchor.diff:  
   -type options() :: [tuple()].
   
  --type metric() :: items | cpu | mem | db_reads | db_writes | db_requests | transactions | tx_latency | net_throughput.
  +-type load_metric() :: items | cpu | mem | tx_latency | net_throughput.
  +-type request_metric() :: db_reads | db_writes | db_requests.
   
   %% available metrics
  --define(METRICS, [items, cpu, mem, db_reads, db_writes, db_requests, transactions, tx_latency, net_throughput]).
  +-define(LOAD_METRICS, [items, cpu, mem, db_reads, db_writes, db_requests, transactions, tx_latency, net_throughput]). 
  +-define(REQUEST_METRICS, [db_reads, db_writes, db_requests, net_throughput, net_latency]).
   
   %% list of active load balancing modules available
   -define(MODULES, [lb_active_karger, lb_active_directories]).
  
positive.code: 
  -spec get_load_metric() -> items | number().
  get_load_metric() ->
      Metric = config:read(lb_active_metric),
      Value = case get_load_metric(Metric) of
          unknown -> 0;
          Val -> Val
      end,
      io:format("Load: ~p~n", [Value]),
      Value. %%TODO
  
  -spec get_load_metric(metric()) -> items | number(). %% unknwon shouldn't happen here, in theory it can TODO
  get_load_metric(Metric) ->
      get_load_metric(Metric, normal).
  
  -spec get_load_metric(metric(), normal | strict) -> unknown | items | number().
  get_load_metric(Metric, Mode) ->
              case Metric of
                  cpu          -> get_vm_metric({lb_active, cpu10sec}, Mode) / 100;
                  mem          -> get_vm_metric({lb_active, mem10sec}, Mode) / 100;
                  db_reads     -> get_dht_metric({lb_active, db_reads}, Mode);
                  db_writes    -> get_dht_metric({lb_active, db_writes}, Mode);
                  db_requests  -> get_load_metric(db_reads, Mode) + get_load_metric(db_writes, Mode); %% TODO
                  %tx_latency   -> get_dht_metric({api_tx, req_list}, avg, Mode);
                  %transactions -> get_dht_metric({api_tx, req_list}, count, Mode);
                  items        -> items;
                  _            -> throw(metric_not_available)
      end.
  
  -spec get_vm_metric(metric(), normal | strict) -> unknown | number().
  get_vm_metric(Metric, Mode) ->
      ClientMonitorPid = pid_groups:pid_of("clients_group", monitor),
      get_metric(ClientMonitorPid, Metric, Mode).
  
negative.code:                        (Type::items, Value::non_neg_integer())   -> ok.
  update_db_monitor(Type, Value) ->
      case monitor_db() of
          true -> monitor:proc_set_value(lb_active, Type,
                                         fun(Old) -> rrd:add_now(Value, Old) end);
          _ -> ok
      end.
  
  