anchor.diff:                  {ok, [ValueName|LineValues]} -> % yeehaw, got a line!
                       RemainingLine = couch_util:implode(LineValues, "="),
                       % removes comments
  -                    {ok, [LineValue | _Rest]} =
  -                        regexp:split(RemainingLine, " ;|\t;"),
  -                    {AccSectionName,
  -                [{{AccSectionName, ValueName}, LineValue} | AccValues]}
  +                    case regexp:split(RemainingLine, " ;|\t;") of
  +                    {ok, [[]]} ->
  +                        % empty line means delete this key
  +                        ets:delete(?MODULE, {AccSectionName, ValueName}),
  +                        {AccSectionName, AccValues};                        
  +                    {ok, [LineValue | _Rest]} ->
  +                        {AccSectionName,
  +                            [{{AccSectionName, ValueName}, LineValue} | AccValues]}
  +                    end
                   end
               end
           end, {"", []}, Lines),
  
positive.code: delete(Section, Key, Persist) when is_binary(Section) and is_binary(Key) ->
      delete(?b2l(Section), ?b2l(Key), Persist);
  delete(Section, Key, Persist) ->
      ?MODULE:set(Section, Key, "", Persist).
  
  
  register(Fun) ->
  
negative.code:             ok
      end,
      [catch F(Sec, Key, Val) || {_Pid, F} <- Config#config.notify_funs],
      {reply, ok, Config};
  handle_call({delete, Sec, Key, Persist}, _From, Config) ->
      true = ets:delete(?MODULE, {Sec,Key}),
      case {Persist, Config#config.write_filename} of
          {true, undefined} ->
              ok;
          {true, FileName} ->
              couch_config_writer:save_to_file({{Sec, Key}, ""}, FileName);
          _ ->
              ok
      end,
      [catch F(Sec, Key, deleted) || {_Pid, F} <- Config#config.notify_funs],
      {reply, ok, Config};
  handle_call({register, Fun, Pid}, _From, #config{notify_funs=PidFuns}=Config) ->
      erlang:monitor(process, Pid),
  