Move the classmethods into models.provider
Rework the API to make it more flexible and rely on the models.provider