making events a object on their own to expose more OO like interactions - this is a breaking change so version bump