add progress listener