public IGameInstance Apply(GameClient client)
        {
            lock (_games)
            {
                if (_clients.Contains(client))
                {
                    throw new Exception("Client already in game");
                }

                var openGame = _games.FirstOrDefault(g => g.HasSpot(client));
                if (openGame == null)
                {
                    openGame = _gameInstanceFactory.CreateGameInstance();
                    openGame.SubscribeNotification(NotifyChanges);
                    _games.Add(openGame);
                }

                openGame.AddPlayer(client);
                _clients.Add(client);
                return(openGame);
            }
        }