This may be premature, unwanted feedback at this stage, so I apologize if that is the case, feel free to disregard, but some things to consider with AMD modules:

1) Avoid naming the modules in source form, so no string ID as the first argument. This should be enough:

```javascript
define(['modules/settings_panel', 'panels/support/support'], function(SettingsPanel, Support) {
});
``

This allows the modules to get their name from how they are used, gives more flexibility of use (also avoids a file content change if you rename the file). The r.js optimizer will give the modules names when it concatenates the modules.

2) In clock and for the email front end, we use the [sugared](http://requirejs.org/docs/whyamd.html#sugar) syntax instead of passing dependency arrays. This can help if there are many dependencies, and for some people it reads better than the dependency array. This is personal style choice though.