anchor.diff:          true -> divisibility_check([H2 | T]);
           false -> false
       end.
  +
  +path_from_key(Key) ->
  +    SlashedKey = binary:replace(Key, <<".">>, <<"/">>, [global]),
  +    PrivDir = code:priv_dir(yasa),
  +    [PrivDir, "/storage/", binary_to_list(SlashedKey), ".yasa"].
  +
  
positive.code:     points/1,
      table/2,
      step_size/1,
      retentions/1
  ]).
  
  -record(rrd, {
  
negative.code: -define(SECONDS_FROM_GREGORIAN_BASE_TO_EPOCH,
           (?DAYS_FROM_GREGORIAN_BASE_TO_EPOCH * 24*60*60)).
  
  new(Retentions) ->
      new(Retentions, []).
  
  new(Retentions, Opts) ->
      Xff = ?pval(xff, Opts, 0.5),
      Consolidation = ?pval(consolidation, Opts, average),
      Divisible = divisibility_check(Retentions),
  
      case Divisible of
          true ->
              Archives = lists:map(fun({Step, Size}) -> #archive{step=Step, size=Size} end, Retentions),
              #rrd{archives=Archives, consolidation=Consolidation, xff=Xff};
          false ->
              {error, not_divisible}
  