Changes that may cause problems with client code: - State initialization with box instances is now deprecated. State initialization is done with "init" methods now. Arguments given to "setState" calls are provided to "init" methods with matching parameter signature. Advice: In the long term remove calls to "setState" having box instances as arguments by creating "init" methods for the transition target state with appropriate parameters. Use these parameters to initialize state boxes. Example: Change setState(StateA::Box("some text", 42)); to void StateA::init(const char * text, int i) { box().text = text; box().i = i; } ... setState("some text", 42); In the short term you may change calls to "setState" having box instances as arguments to calls to "setStateBox". This method offers the old behaviour but is deprecated and will be removed in future versions. Example: Change setState(StateA::Box("some text", 42)); to setStateBox(StateA::Box("some text", 42)); - Method "setState" does not respect history anymore. Formerly calling "setState" always transitioned to the history of a state if available. To ignore history "setStateDirect" was used. This has changed: to transition to the history of a state call "setStateHistory" now. "setState" ignores history from now on. Method "setStateDirect" is deprecated. This was done to allow "setState" to take arguments for the new state's "init" method. This is not possible with the history state, because its identity can not be determined at compile time, so there can be no parameters for the history state. Advice: In the long term change calls to "setState" that transition to a state with history to calls to "setStateHistory". If boxes are used to initialize states change to "setStateBox" (this method continues to respect history). Example: Change setState(); // StateA has history to setStateHistory(); Change setStateDirect(); to setState(); In the short term you may change all calls to "setState" with calls to "setStateBox". This method continues to respect history. - "isCurrentDirect" is deprecated. Advice: Change StateA::isCurrentDirect(m) to StateA::alias() == m.currentState()