refactor add operator