public override void ApplyChanges(Board board) { var rookMoveDirection = Math.Sign((From - To).Column); var rookFromColumn = rookMoveDirection < 0 ? 8 : 1; var rookFrom = new Location(rookFromColumn, From.Row); var rookTo = To.AddColumns(rookMoveDirection); board.MovePieceFromTo(From, To); board.MovePieceFromTo(rookFrom, rookTo); }