created generic Event class