Run interface

Two changes:

* The `run()` hook as discussed
* An `attachTo()` function for progressive top-level controllers