refactor + add create/update/delete event