public void Interpret(string command, IProgram program) { var parts = ProcessCommand(command); if (parts.Length > 0) { if (string.Equals("step", parts[0], StringComparison.CurrentCultureIgnoreCase)) { CreateAndExecuteGameCommand((x, y) => new StepCommand(x, y), parts[1], parts[2], program); return; } else if (string.Equals("flag", parts[0], StringComparison.CurrentCultureIgnoreCase)) { CreateAndExecuteGameCommand((x, y) => new FlagCommand(x, y), parts[1], parts[2], program); return; } else if (string.Equals("exit", parts[0], StringComparison.CurrentCultureIgnoreCase)) { program.Exit(); return; } } //if not returned yet: program.AskForCommand(); }