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 Symbol for display? GameState Direct storage of piece data in a 2D array (speed of computation) Know whose turn it is Be able to set up the starting positions Be able to perform the move (remove piece if a capture, promote to queen if get to the end) Square What pieces (if any) occupies it Knowledge of whether or not castling, en passant are available Move Represents a source and destination square Knows whether or not it was a capture, check, etc. 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.