public bool PlayTurn(PlayerName playerType, Piece piece, CoOrdinate to) { var player = _playerDetailsByType[playerType]; History history = _boardState.GetState(_board.CurrentMoveNumber); if (player.IsValidMove(piece, to, history)) { player.PlayTurn(piece, to); _board.UpdateState(piece); _status = _boardState.GetStatus(_board.CurrentMoveNumber); return(true); } return(false); }