anchor.diff:      NewNodes = [{Node, joinning}|State#state.nodes],
       % TODO: health checks, if 'Node' is healthy, node status changes 
       %       alive.
  -    {noreply, NewNodes};
  +    {noreply, State#state{nodes = NewNodes}};
   handle_cast(_Msg, State) ->
       {noreply, State}.
   
  
positive.code: %%% @doc
  %%% Adds some user's task based on schedule
  %%%
  %%% @spec add_task(binary()) -> term()
  %%% @end
  -spec add_task(binary(), schedule(), detail()) -> term().
  add_task(Task, Schedule, Detail) -> gen_server:call(?SERVER, {add, Task, Schedule, Detail}).
  
  %%% @doc
  %%% Cancels the task
  %%%
  %%% @spec cancel_task(binary()) -> term().
  %%% @end
  -spec cancel_task(binary()) -> term().
  cancel_task(Task) -> gen_server:call(?SERVER, {cancel, Task}).
  
  %%% @doc
  %%% Shows the registered schedule of the task.
  %%%
  %%% @spec show_schedule(binary()) -> term().
  %%% @end
  -spec show_schedule(binary()) -> term().
  show_schedule(Task) -> gen_server:call(?SERVER, {show, Task}).
  
negative.code: -define(SERVER, ?MODULE).
  
  -record(state, {
            nodes = [{node(), alive}] :: [{node(), term()}],
            tasks = [] :: [task()]
           }).
  
  -type task_name() :: binary().
  %% TODO: specifies the proprietary schedule time format.
  -type schedule() :: term().
  -type detail() :: binary().
  -type task() :: dict:dict(task_name(), {schedule(), detail()}).
  
  %%%===================================================================
  %%% API
  