docs: function(parentModule, kbox, id, app, callback) {
  
    if (typeof callback === 'undefined' && typeof app === 'function') {
      callback = app;
      app = undefined;
    }
  
    // Try to load the module.
    return requireModule(parentModule, kbox, id, app)
    // If no module was loaded throw an error.
    .tap(function(mod) {
      if (!mod) {
        throw new Error('Cannot find module ' + id +
          ' try an npm install first.');
      }
    })
    // Handle different kinds of module initializations.
    .then(function(mod) {
  
      // Module was successfully loaded.
      if (typeof mod === 'object') {
  
        // Nothing extra needs to be done, just return module.
        return mod;
  
      } else if (typeof mod === 'function') {
  
        if (mod.length === 0) {
  
          // No arguments, so just execute function and return.
          return Promise.try(function() {
            return mod();
          })
          // Decorate any errors.
          .catch(function(err) {
            throw new KboxRequireError(id, err);
          });
  
        } else {
  
          // Argument names of the mod function.
          var args = inspect(mod);
  
          if (args.length === 1 && args[0] === 'kbox') {
  
            // Execute module function.
            return Promise.try(function() {
              return mod(kbox);
            })
            // Decorate any errors.
            .catch(function(err) {
              throw new KboxRequireError(id, err);
            });
  
          } else if (args.length === 2 &&
            args[0] === 'kbox' &&
            args[1] === 'app') {
  
            // Execute module function.
            return Promise.try(function() {
              return mod(kbox, app);
            })
            // Decorate any errors.
            .catch(function(err) {
              // Print a hopefully helpful warning for certain kinds of errors
              // @todo: this is pretty presumptuous and might be bad
              if (_.includes(err.message, 'Cannot read property')) {
                var warning = [
                  'OH NO!',
                  'It looks like something is wrong with your %s app named %s.',
                  'We recommended purging this app and reinstalling it.',
                  'This should help get it back into the correct state.'
                ];
                log.warn(format(warning.join(' '), id, app.name));
              }
              // Throw the error normally
              else {
                throw new KboxRequireError(id, err);
              }
            });
  
          } else {
  
            // Module function has an incorrect signature, throw an error.
            var funcString = mod.toString().split('\n')[0];
            throw new Error('Module "' + id + '" has an invalid ' +
              'signature. It was expected to be a function with a ' +
              'single argument of kbox, but instead it was: ' + funcString);
  
          }
  
        }
  
      } else {
  
        // This should never happen so assert fail if it does.
        assert.fail(undefined, undefined,
          'Required module expected to be either function or object');
  
      }
  
    })
    // Return.
    .nodeify(callback);
  
  }