async Task <List <HeroCard> > GetHeroCardsForTracksAsync(string genre)
        {
            List <Item> tracks = new GrooveService().GetTracks(genre);

            var cogSvc = new CognitiveService();

            foreach (var track in tracks)
            {
                track.ImageAnalysis = await cogSvc.AnalyzeImageAsync(track.ImageUrl);
            }

            var cards =
                (from track in tracks
                 let artists =
                     string.Join(", ",
                                 from artist in track.Artists
                                 select artist.Artist.Name)
                     select new HeroCard
            {
                Title = track.Name,
                Subtitle = artists,
                Text = track.ImageAnalysis.Description?.Captions?.First()?.Text ?? "No Description",
                Images = new List <CardImage>
                {
                    new CardImage
                    {
                        Alt = track.Name,
                        Tap = BuildBuyCardAction(track),
                        Url = track.ImageUrl
                    }
                },
                Buttons = new List <CardAction>
                {
                    BuildBuyCardAction(track),
                    BuildNewsCardAction(track)
                }
            })
                .ToList();

            return(cards);
        }