Add timeout option for events
Don't trigger events when event has not listeners

Performance optimization