> Somewhat related: it kind of sucks to add elements/divs to the DOM just to create controller instances (and scopes). Something I don't like about Angular. But maybe there are ways to avoid that.

Two things we could do to avoid these "controller elements":

* Use one global controller/scope only, on the body element, and use that global element/scope for configuring every component/widget directive. These would imply using specific names for the options objects, e.g. `$scope.contextPopupOptions`.

* An alternative is to set multiple controllers on the body element (map controller, context popup controller, etc.). These controllers would share the same scope (the ng-directive has scope:true). This option is very similar to the previous option, as one global scope only is used. But with this option we still have per-widget controllers and controller files.

The drawback of these options is that we work with one scope only, which would require watching out for scope property name clashes. This is the price to pay to avoid adding elements just or creating controllers and scopes. If people think this is worth trying out I can create an issue and work on a patch.