Refactor watcher to make it multi thread