implemented caching option