restructured type classes