Maintain strict type discipline between the core and providers