use assertion events, instead of fn wrapper