I've changed a lot of things. I've simplified the board a bit. I've worked out a solution for DiagonalMove. I've instantiated the correct movement objects in each of my pieces. I've created a loop so that my program will continue running until the user quits. My biggest problem right now is that my PawnMove object was created with white pawns in mind so they're not correctly determining their available moves.