Created the generic caching object

Added tests