add a progress listener