better class variant