No more state.value; just cache in vector