Also, when Type => Type functions are not routed through a standard mechanism, they are almost always wrong. (They're almost always wrong anyway, but more so.) This as given is a general case of "map a type to another type, with shallow type aliases and varargs transparent." Considering the other possible values of transparent gives a good idea where it is likely to go wrong. You are insulated from some varieties in this case (I don't know how to get an existential type or an annotated type on top of varargs, as you can with almost anything else) but we should still resist all new ad hoc Type => Type methods, and eliminate as many as we can of the ones we already suffer from.