The top level configuration options used by DirectoryWatcher are used by many of the sub components for a variety of purposes. The Configuration represents all those options and other global like instances.
The top level DirectoryWatcher class allows the configs to be changed during execution, so all of the dependent classes need to be informed when their options have changed. This class allows that.