IWatcher interface and single class per file