anchor.diff:      [] -> {error, zone_not_found};
       [_] -> {error, zone_not_found};
       [_|Labels] ->
  -      case ets:lookup(zones, Name) of
  +      case erldns_storage:select(zones, Name) of
           [{Name, Zone}] -> {ok, Zone};
           _ -> find_zone_in_cache(dns:labels_to_dname(Labels))
         end
  
positive.code: %% for the zone.
  -spec zone_names_and_versions() -> [{dns:dname(), binary()}].
  zone_names_and_versions() ->
    ets:foldl(fun({_, Zone}, NamesAndShas) -> NamesAndShas ++ [{Zone#zone.name, Zone#zone.version}] end, [], zones).
  
  % ----------------------------------------------------------------------------------------------------
  % Write API
  
negative.code: 
  %% @doc Write the zone into the cache.
  handle_call({put, Name, Zone}, _From, State) ->
    ok = erldns_storage:insert(zones, {normalize_name(Name), Zone}),
    {reply, ok, State};
  
  handle_call({put, Name, Sha, Records}, _From, State) ->
    ok = erldns_storage:insert(zones, {normalize_name(Name), build_zone(Name, Sha, Records)}),
    {reply, ok, State}.
  
  handle_cast({put, Name, Zone}, State) ->
    ok = erldns_storage:insert(zones, {normalize_name(Name), Zone}),
    {noreply, State};
  
  handle_cast({put, Name, Sha, Records}, State) ->
    ok = erldns_storage:insert(zones, {normalize_name(Name), build_zone(Name, Sha, Records)}),
    {noreply, State};
  
  handle_cast({delete, Name}, State) ->
    erldns_storage:delete(zones, normalize_name(Name)),
    {noreply, State};
  
  handle_cast(Message, State) ->
  