the initial value should be 0