I think you are right, but I think we should move the "Watched*" bits into a separate package. Perhaps the same as the other work here. Maybe `backend/io`?