I'm not sure this needed to be pulled out.  I'm all for convenience functions, but having this here means there's multiple ways to construct a custom render loop, either by calling `updateAndRender` or by calling its three children.  It seems like both methods ought to be documented, along with an explanation of how to choose which method.  Typically, if you're using multiple widgets with no further customizations, you would call `updateAndRender` per widget.  But, if you have your own time-dependent customizations, you might need to call `initializeFrame` first and `render(update())` after.  You would want to know whether your custom code was executing before or after the clock tick.  Can we explain all that to the app writer?