Refactored to allow user to choose the incrementer