refactored - removed use of EventEmitter because it was not providing
any real value add - removing it makes the code simpler to understand