State Pattern Implementation in C#