function EmitterWrapper(emitter) {
  this.listeners = {};
  this.emitter = emitter;
}

EmitterWrapper.prototype.addListener = EmitterWrapper.prototype.on = function(event, listener) {
  this.emitter.addListener(event, listener);

  if (!this.listeners.hasOwnProperty(event)) {
    this.listeners[event] = [];
  }

  this.listeners[event].push(listener);

  return this;
};

EmitterWrapper.prototype.removeAllListeners = function(event) {
  var events = event ? [event] : Object.keys(this.listeners);
  var self = this;
  events.forEach(function(event) {
    self.listeners[event].forEach(function(listener) {
      self.emitter.removeListener(event, listener);
    });
    delete self.listeners[event];
  });

  return this;
};

module.exports = EmitterWrapper;
