/// <summary>
        /// Internal method to filter pokemon description from pokemon API result
        /// </summary>
        /// <param name="pokemonData">pokemon details</param>
        /// <returns></returns>
        public async Task <string> ReadPokemonDescription(string pokemonData, string readInLanguage = "en")
        {
            string description = string.Empty;

            if (string.IsNullOrEmpty(pokemonData) || pokemonData.ToLower().Contains("not found"))
            {
                throw new ArgumentException("Invalid Pokemon Name");
            }
            var dataSet          = new JObject(JObject.Parse(pokemonData));
            var filteredSettings = dataSet.SelectTokens("$.id");

            if (filteredSettings != null && filteredSettings.Count() > 0)
            {
                var id = filteredSettings.FirstOrDefault().ToString();

                var pokemonDescription = await _pokemonRepository.GetPokemonDescription(id);

                var descriptionDataSet = new JObject(JObject.Parse(pokemonDescription));

                var flavor_text_entries = descriptionDataSet.SelectTokens("$.flavor_text_entries").Children().ToList();
                if (flavor_text_entries != null && flavor_text_entries.Count() > 0)
                {
                    for (int i = 0; i < flavor_text_entries.Count(); i++)
                    {
                        var flavor_text_entriesDataSet = new JObject(JObject.Parse(flavor_text_entries[i].ToString()));

                        if (flavor_text_entriesDataSet.SelectTokens("$.language.name").FirstOrDefault().ToString().ToLower() == readInLanguage)
                        {
                            description += flavor_text_entriesDataSet.SelectTokens("$.flavor_text").FirstOrDefault().ToString();
                        }
                    }
                }
            }
            return(description.Replace("\n", string.Empty));
        }