add watcher func