Use blacklist instead of internal emit function
Document events
Rename propagateEvent to emitAll