public Long128 add(Long128 number) {
		 long lowerSum = myLowerDigits + number.myLowerDigits;
		 boolean carry = false;
		 // overflow
		 if ((lowerSum > 0 && myLowerDigits < 0 && number.myLowerDigits < 0) ||
				 (lowerSum < 0 && myLowerDigits > 0 && number.myLowerDigits > 0)) {
			 lowerSum = lowerSum & Long.MAX_VALUE;
			 carry = true;
		 }
		 if (lowerSum > MAX_LOWER)
			 carry = true;
		 long upperSum = myUpperDigits + number.myUpperDigits;
		 if (carry)
			 upperSum++;
		 return new Long128(lowerSum, upperSum);
	}