add support for custom cache directory