clear before calling callback
revert