don't call callback if NULL