anchor.diff:      ets:update_counter(?MODULE, {Mod, Domain, Key}, Count).
   
   
  -
  -%% @doc Sets a config value.
  +%% @doc Updates a config key applying a function
   -spec update_domain(term(), nklib:domain(), term(), fun((term()) -> term())) ->
       ok.
   
   update_domain(Mod, Domain, Key, Fun) ->
       gen_server:call(?MODULE, {update, Mod, Domain, Key, Fun}).
  +
  +
  +%% @doc Adds a value to a config, that must be a list
  +-spec add_domain(term(), nklib:domain(), term(), term()) ->
  +    ok | {error, term()}.
  +
  +add_domain(Mod, Domain, Key, Val) ->
  +    gen_server:call(?MODULE, {add, Mod, Domain, Key, Val}).
   
   
   %% @doc Loads parsed application environment
  
positive.code:     increment_domain(Mod, none, Key, Count).
  
  
  %% @doc Sets a config value.
  -spec update(term(), term(), fun((term()) -> term())) ->
      ok.
  
  update(Mod, Key, Fun) ->
      update_domain(Mod, none, Key, Fun).
  
  
  
  %% @private
  
negative.code:             {reply, ok, State}
      end;
  
  handle_call({add, Mod, Domain, Key, Val}, _From, State) ->
      Reply = case get_domain(Mod, Domain, Key) of
          undefined ->
              put_domain(Mod, Domain, Key, [Val]),
              ok;
          List when is_list(List) ->
              case lists:member(Val, List) of
                  true ->
                      ok;
                  false ->
                      put_domain(Mod, Domain, Key, [Val|List])
              end;
          _ ->
              {error, invalid_value}
      end,
      {reply, Reply, State};
  
  handle_call(Msg, _From, State) ->
      lager:error("Module ~p received unexpected call ~p", [?MODULE, Msg]),
      {noreply, State}.
  