@cpennington For example, in codemirror-edit.html (one of tabs) there are two functions:
 - window.TabsEditingDescriptorModel.addModelUpdate, which registers modelUpdate callback for current tab.
- window.TabsEditingDescriptorModel.addOnSwitch, which registers tab onswitch function.
At the very moment of loading templates for tabs, tabs-aggregator.coffee is loaded, so window.TabsEditingDescriptorModel is defined, 
but descriptor instance is not created (TabsEditingDescriptor.constructor is not invoked).

We have next order of loading in studio
1. At page load, all js files are loaded, this is where window.TabsEditingDescriptorModel is created.
2. At adding component, all templates are loaded. This is where TabsEditingDescriptorModel.addModelUpdate and TabsEditingDescriptorModel.addOnSwitch are invoked,
3. On pressing edit button in studio, for editing component, descriptor instance is created (TabsEditingDescriptor.constructor is not invoked).