anchor.diff:        [NewGame | Tail]
     end.
   
  +handle_game_started(Game, CurrentTick, Games) ->
  +  GameId = spts_games:numeric_id(Game),
  +  case lists:keytake(GameId, 1, Games) of
  +    false ->
  +      Games;
  +    {value, {GameId, GameName, GameUsers, {_OldFruits, OldCells}}, Tail} ->
  +      % Get the new cell data
  +      {_NewFruits, NewWalls} = condense_cells(spts_games:cells(Game)),
  +      NewSerpentCells = get_serpent_cells(spts_games:serpents(Game)),
  +      NewCells = NewWalls + NewSerpentCells,
  +      % Find the diffs
  +      CellDiff = get_cell_diff(OldCells, NewCells),
  +      % Make the event
  +      NewEvents = [build_start(CurrentTick, CellDiff)],
  +      NewGameUsers = [{User, Events ++ NewEvents} ||
  +                      {User, Events} <- GameUsers],
  +      % Build the new state
  +      NewGameState = {[], NewCells},
  +      % Compose the new game
  +      NewGame = {GameId, GameName, NewGameUsers, NewGameState},
  +      % Return the new game list
  +      [NewGame | Tail]
  +  end.
  +
   %%==============================================================================
   %% Utils
   %%==============================================================================
  
positive.code: get_direction_atom(8) -> down;
  get_direction_atom(_) -> ignore.
  
  get_user_name(UserId, []) ->
    undefined;
  get_user_name(UserId, [{{UserId, UserName, _Address}, _Events} | _Users]) ->
    UserName;
  
negative.code: %%==============================================================================
  %% Message building
  %%==============================================================================
  build_user_joined(User, Tick) ->
    {Id, Name, _Adress} = User,
    NameSize = size(Name),
  