anchor.diff:      ?TRACE("~200p~nwpool: unknown message~n", [Msg]),
       State.
   
  -%% starts worker under the supervisor sup_wpool and also sets up a monitor. The
  -%% supvervisor does not restart the worker in case of failure. Its main purpose
  -%% is to shut workers down when scalaris is shuting down.
  -%% The monitor (between wpool and the worker) is used mainly for error
  -%% reporting. A link could also be used, but wpool would have to call
  -%% ``process_flag(trap_exit, true)'' for every link.
  +%% @doc start a worker
  +%%     starts worker under the supervisor sup_wpool and also sets up a monitor. The
  +%%     supvervisor does not restart the worker in case of failure. Its main purpose
  +%%     is to shut workers down when scalaris is shuting down.
  +%%     The monitor (between wpool and the worker) is used mainly for error
  +%%     reporting. A link could also be used, but wpool would have to call
  +%%     `process_flag(trap_exit, true)' for every link.
   -spec start_worker(comm:mypid(), job(), state()) -> state().
   start_worker(Source, Workload, State) ->
       Sup = pid_groups:get_my(sup_wpool),
  
positive.code: -type(mr_job() :: {Round::pos_integer(),
                     map | reduce,
                     {erlanon | jsanon, binary()},
                     Keep::boolean(),
                     Data::[tuple()]}).
  
  -type(generic_job() :: {erlanon | jsanon, binary(), [tuple()]}).
  
negative.code:             start_worker(Source, Workload, {Max, NewWorking, Rest})
      end.
  
  %% @doc initialize the worker.
  -spec init_worker(pid_groups:groupname(), job()) -> {ok, pid()}.
  init_worker(DHTNodeGroup, Workload) ->
      Pid = spawn_link(?MODULE, work, [DHTNodeGroup, Workload]),
      {ok, Pid}.
  
  %% @doc do the actual work.
  %%      executes Job and returns results to the local wpool. wpool associates
  %%      the worker pid to the jobs client and knows where the results go.
  -spec work(pid_groups:groupname(), job()) -> ok.
  work(DHTNodeGroup, {_Round, map, {erlanon, FunBin}, Data}) ->
      %% ?TRACE("worker: should apply ~p to ~p~n", [FunBin, Data]),
  