Added Variant and improved VariantInterface