working game! needs refinement/refactoring