anchor.diff:  -spec put_zone({binary(), binary(), [#dns_rr{}]}) -> ok | {error, Reason :: term()}.
   put_zone({Name, Sha, Records, AllowNotifyList, AllowTransferList, AllowUpdateList, AlsoNotifyList,
             NotifySourceIP}) ->
  +    NormalizedName = normalize_name(Name),
       erldns_storage:insert(zones,
  -                          {normalize_name(Name), build_zone(Name, AllowNotifyList, AllowTransferList,
  -                                                            AllowUpdateList, AlsoNotifyList,
  -                                                            NotifySourceIP, Sha, Records)}).
  +                          {NormalizedName, build_zone(NormalizedName, AllowNotifyList, AllowTransferList,
  +                                                      AllowUpdateList, AlsoNotifyList,
  +                                                      NotifySourceIP, Sha, normalize_records(Records))}).
   
   %% @doc Put a zone into the cache and wait for a response.
   -spec put_zone(binary(), #zone{}) -> ok | {error, Reason :: term()}.
  -put_zone(Name, #zone{} = Zone) ->
  -    erldns_storage:insert(zones, {normalize_name(Name), Zone}).
  +put_zone(Name, #zone{records = Records, authority = [#dns_rr{name = AuthName} = Auth]} = Zone) ->
  +    NormalizedName = normalize_name(Name),
  +    erldns_storage:insert(zones, {NormalizedName,
  +                                  Zone#zone{name = NormalizedName,records = normalize_records(Records),
  +                                            authority = [Auth#dns_rr{name = normalize_name(AuthName)}]}}).
   
   %% @doc Put a zone into the cache without waiting for a response.
   -spec put_zone_async({binary(), binary(), [#dns_rr{}]}) -> ok | {error, Reason :: term()}.
   put_zone_async({Name, Sha, Records, AllowNotifyList, AllowTransferList, AllowUpdateList, AlsoNotifyList,
                   NotifySourceIP}) ->
  +    NormalizedName = normalize_name(Name),
       erldns_storage:insert(zones,
  -                          {normalize_name(Name), build_zone(Name, AllowNotifyList,AllowTransferList,
  -                                                            AllowUpdateList, AlsoNotifyList,
  -                                                            NotifySourceIP, Sha, Records)}).
  +                          {NormalizedName, build_zone(NormalizedName, AllowNotifyList,AllowTransferList,
  +                                                      AllowUpdateList, AlsoNotifyList,
  +                                                      NotifySourceIP, Sha, normalize_records(Records))}).
   
   %% @doc Put a zone into the cache without waiting for a response.
   -spec put_zone_async(binary(), #zone{}) -> ok | {error, Reason :: term()}.
  -put_zone_async(Name, Zone) ->
  -    erldns_storage:insert(zones, {normalize_name(Name), Zone}).
  +put_zone_async(Name, #zone{records = Records, authority = [#dns_rr{name = AuthName} = Auth]} = Zone) ->
  +    NormalizedName = normalize_name(Name),
  +    erldns_storage:insert(zones,
  +                          {NormalizedName, Zone#zone{name = NormalizedName,
  +                                                     authority = [Auth#dns_rr{name = normalize_name(AuthName)}],
  +                                                     records = normalize_records(Records)}}).
   
   %% @doc Remove a zone from the cache.
   -spec delete_zone(binary()) -> ok | {error, term()}.
  
positive.code: 
  timestamp() ->
      {TM, TS, _} = os:timestamp(),
      (TM * 1000000) + TS.
negative.code: 
  normalize_name(Name) when is_list(Name) -> bin_to_lower(list_to_binary(Name));
  normalize_name(Name) when is_binary(Name) -> bin_to_lower(Name).
  
  %% @doc This function takes a list of records and normalizes the name. This ensures that the record
  %% being looked up is found.
  %% @end
  -spec normalize_records([dns:rr()]) -> [dns:rr()].
  normalize_records(Records) ->
      normalize_records(Records, []).
  
  normalize_records([], Acc) ->
      erldns_log:info("Returning ~p", [Acc]),
      Acc;
  normalize_records([#dns_rr{name = Name} = H | Tail], Acc) ->
      normalize_records(Tail, [H#dns_rr{name = normalize_name(Name)} | Acc]).
  
  %% @doc Takes a binary messages, and transforms it to lower case. Self said!
  -spec bin_to_lower(Bin :: binary()) -> binary().
  