add watch listener