improvements to replace
provide expected amount onIncrement
error hook