[WIP] add a domain event implementation