file watcher (partial)