added caching algorithm and changed description