Change DirectoryMonitor logic to use a more readable for comprehension, instead of the nested case logic.  Extract notification logic into a separate method.