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();
        }