add history listener