simplify new upload and add callback as a parameter