- updated callback handling instead of event emitter