redo listener