subj.
OperatingSystem is initialized with a name and version. I think it make sense to pass version into a Version object used for packages so that package developers could write conditionals which include OS version like self.spec.os_version < Version('10.10') where os_version is an instance of Version object for OS.