Clean up and refactor how we find files and recurse directories