reworked events triggering by adding _triggerEvent()