refactoring ++