implemented watcher