/// <summary>
        /// Domain generator
        /// </summary>
        /// <returns>IEnumerable<string> of domain names</returns>
        public IEnumerable <string> GenerateDomains()
        {
            try
            {
                if (Cities.Count == 0 || Fruits.Count == 0)
                {
                    throw new IndexOutOfRangeException("Cites or Fruits collecion is empty");
                }

                int current = 0;
                while (current < CountToGenerate)
                {
                    string fruit = RandomGenerator <string> .GetRandom(Fruits);

                    string city = RandomGenerator <string> .GetRandom(Cities);

                    TopLevelDomainName tld = RandomGenerator <TopLevelDomainName> .GetRandom(Enum.GetValues(typeof(TopLevelDomainName)).Cast <TopLevelDomainName>());

                    var dc = new DomainCard($"{fruit}-{city}", tld);

                    if (!DomainCards.Any(a => a.ToString() == dc.ToString()))
                    {
                        DomainCards.Add(dc);
                        current++;
                    }

                    Thread.Sleep(20);
                }

                return(DomainCards.Select(s => s.ToString()));
            }
            catch (Exception e)
            {
                throw new Exception("Unable to generate domain name(s).", e);
            }
        }
 /// <summary>
 /// COnstructor that takes a actual domain name and top level domain name
 /// </summary>
 /// <param name="actualName">Actual domain name</param>
 /// <param name="tld">Top Level domain name</param>
 public DomainCard(string actualName, TopLevelDomainName tld)
 {
     ActualDomainName   = actualName;
     TopLevelDomainName = tld;
 }