anchor.diff:          end,
       couch_util:get_value(Key, Indexes).
   
  -
  +%% @doc convert a keylist to record with given `RecName'
  +%% @see lookup_index
   kl_to_record(KeyList,RecName) ->
       Acc0 = case RecName of
             changes_args -> #changes_args{};
  
positive.code: kl_to_query_args(KeyList) ->
      kl_to_record(KeyList, view_query_args).
  
  
  lookup_index(Key,RecName) ->
      Indexes =
          case RecName of
  
negative.code: changes(DbName, Callback, Acc0, Options) ->
      changes(DbName, Callback, Acc0, kl_to_changes_args(Options)).
  
  %% @equiv query_view(DbName, DesignName, ViewName, #view_query_args{})
  query_view(DbName, DesignName, ViewName) ->
      query_view(DbName, DesignName, ViewName, #view_query_args{}).
  
  %% @equiv query_view(DbName, DesignName,
  %%                     ViewName, fun default_callback/2, [], QueryArgs)
  query_view(DbName, DesignName, ViewName, QueryArgs) ->
      Callback = fun default_callback/2,
      query_view(DbName, DesignName, ViewName, Callback, [], QueryArgs).
  
  %% @doc execute a given view.
  %%      There are many additional query args that can be passed to a view,
  %%      see <a href="http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options">
  %%      query args</a> for details.
  -spec query_view(DbName::db_name(), Design::#doc{}, ViewName::string(),
                   Callback::fun((atom() | tuple(),tuple()) ->
                                    tuple()), Acc0::list(),
                   QueryArgs::#view_query_args{}) ->
                      any().
  query_view(DbName, Design, ViewName, Callback, Acc0, QueryArgs) ->
      Db = dbname(DbName), View = name(ViewName),
      case is_reduce_view(Db, Design, View, QueryArgs) of
  