Variant type implementation