anchor.diff:          true -> 
               try merge_logs_ll(Tasks, FileName) 
               catch C:R ->
  -                io:format("ERROR: failed due to error:~p~n", [{C,R}]),
  +                io:format("ERROR: failed due to error:~p~nStack:~p~n", [{C,R}, erlang:get_stacktrace()]),
                   {error, lists:flatten(io_lib:format("~p", [{C,R}]))}
               end;
           _ -> 
  
positive.code:     OpenedTasks = open_tasks(Tasks),
      ok = open_target_file(FileName),
      merge(OpenedTasks),
      ok.
  
  open_target_file(File) ->
      {ok, ?TARGET} = disk_log:open({name, ?TARGET}, {file, File}, {repair, truncate}),
      ok.
  
  
  open_tasks(Tasks) ->
      lists:map(fun
  
negative.code:     Url = "http://api.aboutecho.com/" ++ E,
      {post, Ts, Url, Data}.
  
  % see https://github.com/lkiesow/erlang-datetime/blob/master/datetime.erl for the help
  -spec csv_log_item_process([string()]) -> request().
  csv_log_item_process([DateTimeStr,Endpoint]) ->
      {ok, [MonStr, Day, Year, Hour, Min, Sec, MS], []} = io_lib:fread("~3s ~d, ~d ~d:~d:~d.~d", DateTimeStr),
      Mon = month(MonStr),
      Secs  = calendar:datetime_to_gregorian_seconds( {{Year,Mon,Day},{Hour,Min,Sec}}) - 
                  calendar:datetime_to_gregorian_seconds({{1970,1,1},{0,0,0}}),
      Ts = {Secs div 1000000, Secs rem 1000000, MS},
      Url = "http://api.aboutecho.com" ++ Endpoint,
      {get, Ts, Url}.
  
  month("Jan") -> 1;
  month("Feb") -> 2;
  month("Mar") -> 3;
  month("Apr") -> 4;
  month("May") -> 5;
  month("Jun") -> 6;
  month("Jul") -> 7;
  month("Aug") -> 8;
  month("Sep") -> 9;
  month("Oct") -> 10;
  month("Nov") -> 11;
  month("Dec") -> 12.
  
  strip(Str) ->
      lists:foldl(fun(Char, Acc) -> string:strip(Acc, both, Char) end, Str, [$\r, $\n]).
  
  merge([]) -> ok;
  merge([{_,[R|_]} | _ ] = Handlers) -> 
      MinIdx = min_idx(1, {1,request_timestamp(R)}, Handlers),
      %io:format("MinIdx:~p Handlers:~p~n", [MinIdx, Handlers]),
      {Request, NewHandlers} = get_and_read_next(MinIdx, Handlers),
      %io:format("Request: ~p~n", [element(2,Request)]),
      disk_log:log(?TARGET, Request),
      merge(NewHandlers).
  
  min_idx(_CurIdx, {MinIdx, _Min}, []) -> MinIdx;
  min_idx(CurIdx, {_MinIdx, Min} = M, [{_, [R|_]} | Rest]) ->
      case request_timestamp(R) of 
          Cur when Cur < Min -> min_idx(CurIdx+1, {CurIdx, Cur}, Rest);
          _ -> min_idx(CurIdx+1, M, Rest)
      end.
  
  get_and_read_next(Idx, Handlers) ->
  