clean up, callback can now be empty too