There are a number of extended forms of algebraic data types such as type classes with existential types and generalized algebraic data types. Such extensions are highly useful but their interaction has not been studied formally so far. I loosely refer to them as expressive types (in some papers I also use the term extended algebraic data types, or EADTs for short). In , I co-designed a unifying framework for these extensions. I could also show that in many cases expressive types can be compiled to a very simple typed intermediate language , making the need for extensions as outlined in  unnecessary.