anchor.diff:    {ok, #state{encoders = []}}.
   
   handle_call({encode_zone, Zone}, _From, State) ->
  -  {reply, zone_to_json(Zone, State#state.encoders), State};
  +  {reply, encode_zone_to_json(Zone, State#state.encoders), State};
  +
  +handle_call({encode_zone_records, ZoneName, RecordName}, _From, State) ->
  +  {reply, encode_zone_records_to_json(ZoneName, RecordName, State#state.encoders), State};
  +
  +handle_call({encode_zone_records, ZoneName, RecordName, RecordType}, _From, State) ->
  +  {reply, encode_zone_records_to_json(ZoneName, RecordName, RecordType, State#state.encoders), State};
   
   handle_call({register_encoders, Modules}, _From, State) ->
     {reply, ok, State#state{encoders = State#state.encoders ++ Modules}};
  
positive.code: -include("erldns.hrl").
  
  -export([start_link/0]).
  -export([zone_to_json/1, register_encoders/1, register_encoder/1]).
  
  % Gen server hooks
  -export([init/1,
  
negative.code:                ]
                }]).
  
  encode_zone_records_to_json(_ZoneName, RecordName, Encoders) ->
    Records = erldns_zone_cache:get_typed_records_by_name(RecordName),
    jsx:encode(lists:filter(record_filter(), lists:map(encode(Encoders), Records))).
  
  encode_zone_records_to_json(_ZoneName, RecordName, RecordType, Encoders) ->
    Records = erldns_zone_cache:get_records_by_name_and_type(RecordName, erldns_records:name_type(RecordType)),
    jsx:encode(lists:filter(record_filter(), lists:map(encode(Encoders), Records))).
  
  record_filter() ->
    fun(R) ->
        case R of
  