Add ICachingProvider

part of #8