tag :: algebraic data type