anchor.diff:  handle_call(all, _, Server) ->
       All = [
           [
  -            {type, Type},
  -            {task, Task},
  -            {status, Status},
  +            {type, Task#task_status.type},
  +            {task, Task#task_status.name},
  +            {started_on, Task#task_status.start_ts},
  +            {updated_on, Task#task_status.update_ts},
  +            {status, Task#task_status.status},
               {pid, ?l2b(pid_to_list(Pid))}
           ]
           ||
  -        {Pid, {Type, Task, Status}} <- ets:tab2list(?MODULE)
  +        {Pid, Task} <- ets:tab2list(?MODULE)
       ],
       {reply, All, Server}.
   
   
   handle_cast({update_status, Pid, StatusText}, Server) ->
  -    [{Pid, {Type, TaskName, _StatusText}}] = ets:lookup(?MODULE, Pid),
  +    [{Pid, #task_status{name = TaskName} = Task}] = ets:lookup(?MODULE, Pid),
       ?LOG_DEBUG("New task status for ~s: ~s",[TaskName, StatusText]),
  -    true = ets:insert(?MODULE, {Pid, {Type, TaskName, StatusText}}),
  +    NewTaskStatus = Task#task_status{status = StatusText, update_ts = now_ts()},
  +    true = ets:insert(?MODULE, {Pid, NewTaskStatus}),
       {noreply, Server};
   handle_cast(stop, State) ->
       {stop, normal, State}.
  
positive.code: code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
  
negative.code: 
  -include("couch_db.hrl").
  
  -record(task_status, {
      type,
      name,
      start_ts,
      update_ts,
      status
  }).
  
  
  start_link() ->
      gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
  