anchor.diff:  			{reply, {error, not_found}, State}
   	end.
   
  +-spec handle_cast(Request :: term(), State :: term()) -> Result when
  +	Result :: {noreply, NewState}
  +			| {noreply, NewState, Timeout}
  +			| {noreply, NewState, hibernate}
  +			| {stop, Reason :: term(), NewState},
  +	NewState :: term(),
  +	Timeout :: non_neg_integer() | infinity.
   handle_cast({remove_game, GameId}, _From, State) ->
   	GameDict = State#state.games,
   	{noreply, State#state{games = dict:erase(GameId, GameDict)}}.
   
  +-spec handle_info(Info :: timeout | term(), State :: term()) -> Result when
  +	Result :: {noreply, NewState}
  +			| {noreply, NewState, Timeout}
  +			| {noreply, NewState, hibernate}
  +			| {stop, Reason :: term(), NewState},
  +	NewState :: term(),
  +	Timeout :: non_neg_integer() | infinity.
   handle_info({'DOWN', Ref, process, _Pid, _Reason}, 
   				#state{games = GameDict} = State) ->
   	Games = dict:to_list(GameDict),
  
positive.code: %% gen_server callbacks
  -export([init/1,
  		 handle_call/3,
  		 handle_cast/3]).
  
  %% state rec
  -record(state, {manager_sup,
  
negative.code: %% API functions
  %%====================================================================
  
  -spec start_link() -> gen:start_ret().
  start_link() ->
  	gen_server:start_link({local, bc_manager_serv}, ?MODULE, [], []).
  
  -spec create_game(BcManagerServ :: pid(), 
  				  Privacy :: integer()) -> {ok, GameId :: integer(), BcGameFsm :: pid()} | 
  											   {error, Reason :: string()}.
  create_game(BcManagerServ, Privacy) ->
  	gen_server:call(BcManagerServ, {create_game, Privacy}).
  
  -spec get_game(BcManagerServ :: pid(), 
  			   GameId :: integer()) -> {ok, BcGameFsm :: pid()} | 
  										   {error, not_found}.
  get_game(BcManagerServ, GameId) ->
  	gen_server:call(BcManagerServ, {get_game, GameId}).
  
  -spec remove_game(BcManagerServ :: pid(), 
  				  GameId :: integer()) -> ok.
  remove_game(BcManagerServ, GameId) ->
  	gen_server:cast(BcManagerServ, {remove_game, GameId}).
  
  