Rename onAfter to callback to avoid confusion