the Monoid propagates through Algebraic Data Types
the Monoid propagates through Algebraic Data Types