we should just use an event emitter c/d ?