decent OO structure for game parts