game loop doesn't use callbacks/recursion anymore; should be a bit faster