Fix Watcher, add test for `watch`