implementation of watcher wrapper