add algebraic data types demo