some more work on addition; use also for subtraction