public override void ParseOptions(string input)
        {
            var inputOptions = input.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries).Skip(1).ToList();

            GameMode gameMode;

            if (!inputOptions.Any() || !Enum.TryParse(inputOptions[0], true, out gameMode))
            {
                throw new InvalidCommandOptionsException("Unknown game mode.");
            }

            if (gameMode == GameMode.Custom)
            {
                int height, width, mines;
                if (inputOptions.Count < 4)
                {
                    throw new InvalidCommandOptionsException("Invalid number of parameters for custom mode.");
                }

                if (!int.TryParse(inputOptions[1], out height) ||
                    !int.TryParse(inputOptions[2], out width) ||
                    !int.TryParse(inputOptions[3], out mines))
                {
                    throw new InvalidCommandOptionsException("Cannot parse parameters for custom mode. Integers are required.");
                }

                _gameOptions = GameOptions.BuildCustom(height, width, mines);
                _windowName  = inputOptions.Count > 4 ? inputOptions[4] : null;
            }
            else
            {
                _gameOptions = GameOptions.GetPredefined(gameMode);
                _windowName  = inputOptions.Count > 1 ? inputOptions[1] : null;
            }
        }