do not pass a ProgressBar around, pass a callback