DRY: ReadDir/ReadFile
extract ReadRoot() from ReadDir()