anchor.diff:      ?DNSXD_ERR("Stray cast:~n~p~nState:~n~p~n", [Msg, State]),
       {noreply, State}.
   
  -handle_info({clean_zone, ZoneName, Ref, Serials}, State) ->
  -    ok = clean_zone(ZoneName, Ref, Serials),
  +handle_info({clean_zone, #zone_ref{} = ZoneRef, Serials}, State) ->
  +    ok = clean_zone(ZoneRef, Serials),
       {noreply, State};
   handle_info(reload_zones, #state{reload_pid = undefined} = State) ->
       Now = dns:unix_time(),
  
positive.code: 		    NewZone = #zone{labels = ZoneNameLabels, cuts = Cuts - 1},
  		    ets:insert(?TAB_ZONE, NewZone)
  	    end,
  	    ?SERVER ! {clean_zone, ZoneName, Ref, Serials},
  	    ok;
  	[] -> ok
      end.
  
  clean_zone(ZoneName, Ref, Serials) ->
      ZoneRef = #zone_ref{name = ZoneName, ref = Ref},
      clean_zone(ZoneRef, Serials).
  
  clean_zone(ZoneRef, [Serial|Serials]) ->
      SerialRef = #serial_ref{zone_ref = ZoneRef, serial = Serial},
  
negative.code: 
  do_delete_zone(ZoneName) ->
      ZoneNameLabels = dns:dname_to_labels(ZoneName),
      ets:delete(?TAB_RELOAD, ZoneName),
      case ets:lookup(?TAB_ZONE, ZoneNameLabels) of
  	[#zone{ref = Ref, serials = Serials, cuts = Cuts}] ->
  	    ZoneRef = #zone_ref{name = ZoneName, ref = Ref},
  	    ets:delete(?TAB_TSIG, ZoneRef),
  	    ok = decrement_zone_entry_cuts(ZoneNameLabels),
  	    case Cuts of
  		0 -> ets:delete(?TAB_ZONE, ZoneNameLabels);
  