[refactor] removed Watcher interface and renamed WatcherImpl to Watcher