add can_execute_event? to check against guard clauses