public void MovePiece(Move move)
{
var piece = _board.Squares[move.StartRow][move.StartColumn].ChessPiece;
var defender = _board.Squares[move.EndRow][move.EndColumn].ChessPiece;
var currentTeam = TeamToMove();
ValidateActiveGame();
ValidateIsCurrentTeam(piece);
ValidateIsLegalMove(move, piece);
PerformMove(move, defender, piece);
MarkGameProgress(piece, defender);
ValidateKingNotInCheck(currentTeam);
}