watching = watching.updated(watchee, watcher) is likely to be cheaper than allocating a Tuple2 & adding parens