anchor.diff:  -export([new_histogram/2, new_counter/2, new_spiral/2]).
   -export([update_hist/2, update_counter/2, update_spiral/2]).
   
  +-type name() :: atom().
  +
  +-spec new_histogram(name()) -> ok.
   new_histogram(Name) when is_atom(Name) ->
       new_histogram(Name, []).
   
  +-spec new_histogram(name(), [proplists:property()]) -> ok.
   new_histogram(Name, Opts) when is_atom(Name) ->
       ExName = [amoc, histograms, Name],
       {Reporter, Interval} = reporter_and_interval(Opts),
  
positive.code:     ok = exometer:new(ExName, histogram),
      ok = exometer_report:subscribe(Reporter, ExName, ReportProps, Interval).
  
  new_spiral(Name) when is_atom(Name) ->
      new_spiral(Name, []).
  
  new_spiral(Name, Opts) when is_atom(Name) ->
      ExName = [amoc, spirals, Name],
      {Reporter, Interval} = reporter_and_interval(Opts),
  
negative.code:     ok = exometer:new(ExName, counter),
      ok = exometer_report:subscribe(Reporter, ExName, ReportProps, Interval).
  
  -spec update_hist(name(), integer()) -> ok.
  update_hist(Name, Value) when is_atom(Name) ->
      ExName = [amoc, histograms, Name],
      exometer:update(ExName, Value).
  
  -spec update_spiral(name(), integer()) -> ok.
  update_spiral(Name, Value) when is_atom(Name) ->
      ExName = [amoc, spirals, Name],
      exometer:update(ExName, Value).
  
  -spec update_counter(name(), integer()) -> ok.
  update_counter(Name, Value) when is_atom(Name) ->
      ExName = [amoc, counters, Name],
      exometer:update(ExName, Value).
  
  -spec reporter_and_interval([proplists:property()]) -> {module(), non_neg_integer()}.
  reporter_and_interval(Opts) ->
      Reporter = proplists:get_value(reporter, Opts, exometer_report_graphite),
      Interval = proplists:get_value(interval, Opts, 5000),
  