private async Task OnExecute()
        {
            if (string.IsNullOrEmpty(MapPath))
            {
                return;
            }
            if (string.IsNullOrEmpty(AdventureDllPath))
            {
                return;
            }

            var builder = new GameBuilder();
            var runner  = builder.BuildGameRunner(MapPath, AdventureDllPath).Result;

            GameState turn;

            do
            {
                await Task.Delay(TimeBetweenTurns);

                turn = await runner.PlayTurn();

                if (!OutputGame)
                {
                    continue;
                }
                Console.WriteLine(turn.TurnCounter);
                Console.WriteLine(runner.ToString());
            } while (!turn.IsFinished);

            Console.WriteLine("============ FINISHED ============");
            Console.WriteLine("Total rounds played: " + turn.TurnCounter);
            Console.WriteLine("Total balance: " + turn.Party.Balance);
            Console.WriteLine("Total health left: " +
                              turn.Party.Members.Select(member => member.HealthPoints).Sum());
            Console.WriteLine("==================================");
        }