lazy loading
change cache.file to cache.path