added hash_dir, hash_file, buffered_read