add: `onCreate` and `onUpdate` support