def cache(key = nil)
      key ||= BasicCache.caller_name
      key = key.to_sym
      if include? key
        @store[key].value
      else
        value = yield
        @store[key] = TimeCacheItem.new Time.now, value
        value
      end
    end
def cache(key = nil)
      key ||= BasicCache.caller_name
      key = key.to_sym
      if include? key
        @store[key].value
      else
        value = yield
        @store[key] = TimeCacheItem.new Time.now, value
        value
      end
    end
Return a value from the cache, or calculate it and store it
 Recalculate if the cached value has expired