code: function(event_name, fn, context) {
  
  		var listener = {
  				event_name: event_name,
  				fn: fn,
  				fn_original: fn,
  				context: context
  			};
  
  		if (this._event_usage_counters[event_name]) {
  
  			this._event_usage_counters[event_name]++;
  			this._event_handlers[event_name].push(listener);
  
  		} else {
  
  			this._event_usage_counters[event_name] = 1;
  			this._event_handlers[event_name] = [listener];
  			this._initEvent(event_name);
  
  		}
  
  		return listener;
  
  	}
docs: Add a listener for DOM event. Similar to {@link Lava.mixin.Observable#on}
  @param {string} event_name Name of DOM event
  @param {function} fn Callback
  @param {Object} context Callback owner
  @returns {_tListener} The listener structure, similar to {@link Lava.mixin.Observable#on} result