added a recursive version of the file observer