@xiangli-cmu `NewXXX()` functions usually don't have a receiver and method names are typically verbs. Can you keep the name `Watch()` but just return a `*Watcher`?