In app.cecil:
The
generic_app object is a place to put all default behavior
that can be customized by individual applications.
The app object can be referred to in libraries to get access to application-specific behavior.
Library code should add default behavior to generic_app, but send
messages to app to access it.
Individual applications can then add objects *in between* app and
generic_app, using extend declarations to add inheritance links.
E.g.
Less nicely, they could add methods directly on app itself, if they know that no later app will want to reuse this code but override some of it.