add smart_cache support