add update_variant and new_variant