removed obsolete specs using private listeners array to store listeners
update documentation, added specs, tightened up add_listener
added semicolons
Update var names