public function on($name, $handler, $data=array(), $append=true)
	{
		$this->ensureEvents();
		
		if ($append || empty($this->_events[$name])) {
		    $this->_events[$name][] = $data ? [$handler, $data] : [$handler];
		} else {
		    array_unshift($this->_events[$name], $data ? [$handler, $data] : [$handler]);
		}
	}