code: function EventReactor(options, proto) {
      // allow initialization without a new prefix
      if (!(this instanceof EventReactor)) return new EventReactor(options, proto);
  
      options = options || {};
      this.restore = {};
  
      // don't attach the extra event reactor methods, we are going to apply them
      // manually to the prototypes
      if (options.manual) return this;
  
      var methods = EventReactor.generation
        , method;
  
      for (method in methods) {
        if (methods.hasOwnProperty(method)) {
          this[method](proto);
        }
      }
  
      // such as aliases and emit overrides
      this.aliases(proto);
      this.emit(proto);
    }
docs: The EventReactor plugin that allows you to extend update the EventEmitter
  prototype.
  
  @constructor
  @param {Object} options
  @param {Prototype} proto prototype that needs to be extended
  @api public