- addition implementation