I think this loop can be improved a bit by using `_.each` and doing it at the same time as setting the cachedGlobalSchema. Something along these lines should work (Note: I have not tested this):

```
            // Require all of them
            for (var c = 0; c < configFiles.length; c++) {
                var configFile = require(module + '/config/' + configFiles[c]);
                cachedSchema[module] = _.extend(cachedSchema[module] || {}, configFile);
                // Cache the tenant admin schema as well, but remove the values that are only visible to global admins
                cachedTenantSchema[module] = _.extend(cachedTenantSchema[module] || {}, configFile);
                _.each(configFile, function(moduleKey, module) {
                    _.each(module, function(featureKey, feature) {
                        _.each(feature, function(elementKey, element) {
                            if (element.globalAdminOnly) {
                                delete cachedTenantSchema[moduleKey][featureKey].elements[elementKey];
                            }
                        });
                    });
                });
            }
            done++;
            if (done === toDo) {
                callback();
            }
```
```