pass in progress function and add withoutprogress option