Make Watcher a class, as it carries state