Maybe PartitionsSpec can be an interface somehow? Not entirely sure how that would work, but that could be a potential switching mechanism.