fadd refactored