using event emitter in favour of raw callbacks
3.0.0
bump version