add a progress support