Sometimes you call the result of `allocateState` a `...State` and sometimes `...Id`  I guess these are not two different types of things, but both are numbers that uniquely identify a state?