- Has pieces
- Has common piece properties
- Subclasses implement procedures
- Is move valid? Can the piece at position 1 move to position2 give it's "is move valid" rulesets.
- Is it not blocked? In the piece's attempt to move from position 1 to position 2 is it blocked by a piece.
- Can take piece is occupied? If a piece is already at position 2 is it of the other team so that the piece can take it?
- Resolve move to temporary state Create a temporary board state having resolved the move.
- Does move put self into check? If after resolving the move, is does the player end up in check. If it does, discard temporary state. If