better design for FileWatcher