increment refactor