The current logic to init, start and end frame, handle input, and render is all over the place.
All of these calls should not be visible to the user, the engine should handle them.
Therefore a system or something similar should be setup so that it is out-of-the-way.