This allows us to safely use the machine without having to worry about multiple readers using the machine in different states.
Initializer defines the new method on a machine, that accepts any state marked as InitialState, and returns a new machine.