split watcher for better performance