Possible classes: GUI Display the game board Show the selected first half of the move Show the list of moves that are performed so far Show the captured pieces Show highlighting for the most recent move GameBoard Direct storage of piece data in a 2D array (speed of computation) Knowledge of whether or not castling, en passant are available Be able to set up the starting positions Perform the move (remove piece if a capture, promote to queen if get to the end) Piece (subclasses?) Symbol Position (else captured) Player Enacts moves on the GameBoard Where are the rules going to be programmed in? A piece has to be aware of other stuff going on around it in order to calculate if a move is legal or not. What is a piece location useful for? Checking for legality of moves Drawing the pieces on the board Duplicating game states will be easier if we don't have lots of objects attached to the game board.