Integrate EventEmitter instead of custom solution