Totally rewrote with events based approach, rather than callback approach
Removed the cli interface, was unnecessary
Fixes test bugs