docs: function(kbox, id, app, callback) {
  
    if (typeof callback === 'undefined' && typeof app === 'function') {
      callback = app;
      app = undefined;
    }
  
    // Get global config.
    var globalConfig = kbox.core.deps.lookup('globalConfig');
  
    // List of dirs that we care about.
    var dirs = [
      globalConfig.srcRoot,
      globalConfig.sysPluginRoot,
      globalConfig.userPluginRoot
    ];
    if (app) {
      dirs.push(app.config.appRoot);
    }
  
    // Each dir could have any of these sub dirs.
    var subDirs = [
      'node_modules',
      'plugins'
    ];
  
    // Helper function that lodash should be ashamed for not having. :P
    var flattenMap = function(elts, iterator) {
      return _(elts)
      .chain()
      .map(iterator)
      .flatten()
      .value();
    };
  
    // Map dirs to full list of paths.
    var paths = flattenMap(dirs, function(dir) {
      return _.map(subDirs, function(subDir) {
        return path.join(dir, subDir, id, 'index.js');
      });
    });
  
    // Filter paths by existance.
    return Promise.filter(paths, fs.existsSync)
    .all()
    // Grabs the last path so that we load things from SRC -> SYS -> USER
    .then(function(paths) {
      return _.last(paths);
    })
    // If a path exists try to require it.
    .then(function(path) {
      if (path) {
        return Promise.try(function() {
          return require(path);
        })
        .catch(function(err) {
          // Decorate the error.
          throw new KboxRequireError(path, err);
        });
      }
    })
    // Return.
    .nodeify(callback);
  
  }