added ownership semantics to Variant