Some cleaning up and restructuring
Pre Event IO
Utilize event emitter instead of my own version of it.