anchor.diff:  get_ddoc_process(#doc{} = DDoc, DDocKey) ->
       % remove this case statement
       case gen_server:call(couch_query_servers, {get_proc, DDoc, DDocKey}) of
  -    {ok, Proc, QueryConfig} ->
  +    {ok, Proc, {QueryConfig}} ->
           % process knows the ddoc
  -        case (catch proc_prompt(Proc, [<<"reset">>, QueryConfig])) of
  +        case (catch proc_prompt(Proc, [<<"reset">>, {QueryConfig}])) of
           true ->
  -            proc_set_timeout(Proc, list_to_integer(couch_config:get(
  -                                "couchdb", "os_process_timeout", "5000"))),
  +            proc_set_timeout(Proc, couch_util:get_value(<<"timeout">>, QueryConfig)),
               link(Proc#proc.pid),
               gen_server:call(couch_query_servers, {unlink_proc, Proc#proc.pid}),
               Proc;
  
positive.code:         end,
          rem_value(PidProcs, Pid),
          catch rem_from_list(LangProcs, Proc#proc.lang, Proc),
          {noreply, Server};
      [] ->
          case Status of
          normal ->
  
negative.code:     prompt_fun,
      set_timeout_fun,
      stop_fun
  }).
  
  -record(qserver, {
      langs, % Keyed by language name, value is {Mod,Func,Arg}
      pid_procs, % Keyed by PID, valus is a #proc record.
      lang_procs, % Keyed by language name, value is a #proc record
      lang_limits, % Keyed by language name, value is {Lang, Limit, Current}
      waitlist = [],
      config
  }).
  
  start_link() ->
  