Abstract out the file system directory reader and add interface