Finite State Machines in C# – getting started