utility recursive_directory