refactor add