derive Zero from Monoid
Option[A: Zero] functions