implemented endo monoid