implement correct workflow for events