There was a strange bug related to the Card.equals implementation that was screwing up the board, so I removed the overriden equals method for now until I can get it figured out.