nit: ModifyEvent is overly magical in assuming this.provider indicates if this is a create event flow or edit event flow... maybe we can factorize that here into a getter.