basic object cache implementation