add an argument check for callback