more robust add function and odd up function"