initial commit: classes, basic game logic