a game loop I am happy with