understanding polymorphic variants