refactor design
remove event class