added directory_archive() function