anchor.diff:  handle_cast({setTimerRef, User, TimerRef}, State = #state{timers = Timers}) ->
       Timers2 = lists:keystore(User, 1, Timers, {User, TimerRef}),
       {noreply, State#state{timers = Timers2}};
  +handle_cast({evalRemove, Pid}, State = #state{timers = Timers}) ->
  +    case lists:keytake(Pid, 1, Timers) of
  +        false ->
  +            Ref = erlang:send_after(60*60*1000, self(), {removeSession, Pid}),
  +            setTimerRef(Pid, Ref),
  +            {noreply, State};
  +        {value, {Pid, OldRef}, Timers2} ->
  +            erlang:cancel_timer(OldRef),
  +            Ref = erlang:send_after(60*60*1000, self(), {removeSession, Pid}),
  +            setTimerRef(Pid, Ref),
  +            {noreply, State#state{timers = Timers2}}
  +    end;
   handle_cast(stop, State) ->
       {stop, normal, State};
   handle_cast(_Msg, State) ->
  
positive.code: %% API
  -export([start_link/1,
           stop/0,
           setTimerRef/2,
           setStatusUpdate/3,
           clearPage/0,
  
negative.code:     {list_to_integer(Year), list_to_integer(Month), list_to_integer(Day)}.
  
  keepAliveSessions(SessionTuple) ->
      ProcessAlive = fun ({{remote, Pid}, _})  -> evalRemove(Pid);
                         ({Pid, _})            -> is_process_alive(Pid) end,
      case catch lists:filter(ProcessAlive, SessionTuple) of
          {'EXIT', _Reason} ->
              SessionTuple;
  