complementary types
nicer stringification
unions and intersections