I used the method_exists route as I did not want to limit providers to only those that extend CacheProvider but also any custom provider that may just implement the Cache interface. Is this valid thinking?