anchor.diff:  handle_call(Msg, _From, State) ->
       {stop, {unknown_call, Msg}, State}.
   
  -
   %% Handle the down message from a stopped session, remove it from the session admin
   handle_info({'DOWN', _MonitorRef, process, Pid, _Info}, State) ->
       State1 = erase_session_pid(Pid, State),
  
positive.code: 
  %% @spec tick(pid()) -> void()
  %% @doc Periodic tick used for cleaning up sessions
  tick(Pid) when is_pid(Pid) ->
      gen_server:cast(Pid, tick).
  
  %% @spec broadcast(#broadcast, Context) -> ok
  %% @doc Broadcast a notification message to all open sessions.
  
negative.code: %% @spec init(SiteProps) -> {ok, State}
  %% @doc Initialize the session server with an empty session table.  We make the session manager a system process
  %%      so that crashes in sessions are isolated from each other.
  init(SiteProps) ->
  	{host, Host} = proplists:lookup(host, SiteProps),
      State = #session_srv{
  					context=z_acl:sudo(z_context:new(Host)),
  					key2pid=dict:new(), 
  					pid2key=dict:new(), 
  					persist2pid=dict:new(), 
  					pid2persist=dict:new()
  			},
      timer:apply_interval(?SESSION_CHECK_EXPIRE * 1000, ?MODULE, tick, [self()]),
      process_flag(trap_exit, true),
      {ok, State}.
  