implement Event class