Can we have the type system enforce this requirement, or is it just descriptive?