Composite types with variants