implementing Event model