Added proper support for events.  Refactored Connection and EventListener