function prepareHook(id) {

      var rawHookFn = hooks[id];

      // Backwards compatibility:
      if (rawHookFn === 'false') {

        // FUTURE: Do not allow the string "false" here (now that all environment variables
        // are handled via rttc.parseHuman, this is no longer necessary)
        sails.log.debug('The string "false" was configured for `sails.config.hooks[\''+id+'\']`.');
        sails.log.debug('For compatibility\'s sake, automatically changing this to `false` (boolean).');
        sails.log.debug('(Note that this backwards-compatibility check will be removed in a future');
        sails.log.debug('release of Sails, so be sure to update this app ASAP.)');
        rawHookFn = false;

      }//>-


      // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      // COMPATIBILITY NOTE:
      // There used to be a check here, to the effect of this:
      // ```
      // // Check if this hook has a dot in the name.
      // // If so, something is wrong.
      // var doesHookHaveDotInName = !!id.match(/\./);
      // if (doesHookHaveDotInName) {
      // var partBeforeDot = id.split('.')[0];
      // hooks[partBeforeDot] = false;
      // ```
      //
      // But it was removed in Sails v1, since it was no longer relevant.
      // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


      // Allow disabling of hooks by setting them to `false`.
      if (rawHookFn === false) {
        delete hooks[id];
        return;
      }

      // Check for invalid hook config
      if (hooks.userconfig && !hooks.moduleloader) {
        return cb('Invalid configuration:: Cannot use the `userconfig` hook w/o the `moduleloader` hook enabled!');
      }

      // Handle folder-defined modules (default to index.js)
      // Since a hook definition must be a function
      if (_.isObject(rawHookFn) && !_.isArray(rawHookFn) && !_.isFunction(rawHookFn)) {
        rawHookFn = rawHookFn.index;
      }

      if (!_.isFunction(rawHookFn)) {
        sails.log.error('Malformed hook! (' + id + ')');
        sails.log.error('Hooks should be a function with one argument (`sails`)');
        sails.log.error('But instead, got:', rawHookFn);
        process.exit(1);
      }

      // Instantiate the hook
      var def = rawHookFn(sails);

      // Mix in an `identity` property to hook definition
      def.identity = id.toLowerCase();

      // If a config key was defined for this hook when it was loaded,
      // (probably because a user is overridding the default config key)
      // set it on the hook definition
      def.configKey = rawHookFn.configKey || def.identity;

      // New up an actual Hook instance
      hooks[id] = new Hook(def);
    }
FUTURE: extrapolate
@param  {[type]} id [description]
@return {[type]}    [description]