Any reason why ```_allocate_state``` starts with an underscore but ```initialize_state``` does not?

Could ```_allocate_state``` be removed in favor of an additional constructor parameter, e.g., ```initial_state```? That way, the constructor can set ```self.state``` to the value of that parameter, and it'll be one less method that devs need to override/implement. It's likely that I'm misunderstanding what the real intention of this method is, but from looking at the test code and docstring examples, it seems like this strategy might work.