Also made choice attributes polymorphic -- it's needed to easily compare attribute pointed to by option with a specialized subclass instance.