add progress functionality and example