introduce CounterState