add state watch