Algebraic types

Summary