Optional instance of semigroup