There's probably a good use-case for the weight<=>value copying, but I find it confusing. The meaning of "value" varies depending on the OptionGroup -- e.g. "value" might store an integer-sequence that parallels "weight"... or "value" might store strings... or floating-point numbers... or anything. In the use-cases where value is *not* an integer-sequence, the caller would want to set "value" explicitly but still autogenerate "weight". I think this is why we allowed "next" as a pseudo-weight.