refactor request watcher