changed top level traits to classes for variance testing