add spy listener