add file watcher support