refactor ++