Refactor the game implementation so the private stuff is properly hidden
Add comment next to function definition that I think TypeScript can't express properly
Hide the private variables for the registered watchers too