register watch callback