more sophisticated progress bar