This is being done so that the type can define the valid fields for a repo and the provider automatically picks up on it, correct?