code: function Emitter() {
  	var emt = this;
  	if (isNode) {
  		EE.call(this);
  		if (this.prototype) return Util.inherits(this, EE);
  		return new EE();
  	}
  	//Thank you, http://stackoverflow.com/a/24216547
  	function _Emitter() {
  		var eventTarget = document.createDocumentFragment();
  		["addEventListener", "dispatchEvent", "removeEventListener"].forEach(function(method) {
  			if (!this[method]) this[method] = eventTarget[method].bind(eventTarget);
  		}, this);
  	}
  	//But I did the rest myself! D:<
  	_Emitter.call(this);
  	this._evts = {};
  	this.on = function(eName, eFunc) {
  		if (!emt._evts[eName]) emt._evts[eName] = [];
  		emt._evts[eName].push(eOn);
  
  		return this.addEventListener(eName, eOn);
  
  		function eOn(e) {
  			return eFunc.apply(null, resolveEvent(e));
  		}
  	};
  	this.once = function(eName, eFunc) {
  		if (!emt._evts[eName]) emt._evts[eName] = [];
  		emt._evts[eName].push(eOnce);
  
  		return this.addEventListener(eName, eOnce);
  
  		function eOnce(e) {
  			eFunc.apply(null, resolveEvent(e));
  			return emt.removeListener(eName, eOnce);
  		}
  	};
  	this.removeListener = function(eName, eFunc) {
  		if (emt._evts[eName]) emt._evts[eName].splice(emt._evts[eName].lastIndexOf(eFunc), 1);
  		return this.removeEventListener(eName, eFunc);
  	};
  	this.emit = function(eName) {
  		return this.dispatchEvent( new CustomEvent(eName, {'detail': Array.prototype.slice.call(arguments, 1) }) );
  	};
  	return this;
  }
docs: /* Wrappers