refactoring add operator