Added nicer inheritance for events
Added validation