Common service provider interfaces and useful base implementations for dealing with models and types