Controlling state changes from the root object - C#