internalize dep collection to watcher.js