I think there's more going on here than you think.What you're really asking for is inheritance, which currently does not exist for value types. Protocol extensions are vaguely similar to inheritance in some ways, but not currently so far as to allow you to have default stored properties.You could use inheritance if your columns were classes instead of structs. Indeed, in this case, I think it's clear that your columns should be classes instead of structs. Generally, structs are inappropriate when their value represents the state of some thing, whether it's a real world object or a specific entity like a column (presumable of some table or list). In this case, a particular column has one true name, presumably along with other one true properties that you haven't shown us. If the column's one true state is immutable, it doesn't really matter whether it's a value type or a reference type, but if it's mutable as yours seems likely to be, then it's almost certainly bett