implement headOr, product
Implement sum