make sure callback can be NULL