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