public static bool OnAddressSetEvent(string text, ref string card, GenericBase cardDriver)
        {
            var keepText = false;

            if (text.IsNotEmpty())
            {
                try {
                    int address;
                    if ((text.StartsWith("x", StringComparison.InvariantCultureIgnoreCase)) ||
                        (text.StartsWith("0x", StringComparison.InvariantCultureIgnoreCase)))
                    {
                        var parseString = text.Substring(text.IndexOf("x", StringComparison.InvariantCultureIgnoreCase) + 1);
                        address = int.Parse(parseString, NumberStyles.HexNumber);
                    }
                    else
                    {
                        address = Convert.ToInt32(text);
                    }

                    if (!AquaPicBus.SlaveAddressOk(address))
                    {
                        MessageBox.Show("Address already exists");
                    }
                    else
                    {
                        var ja = SettingsHelper.OpenSettingsFile("hardware") as JArray;

                        card = string.Format(
                            "{0}{1}",
                            cardDriver.GetCardAcyronym(),
                            cardDriver.GetLowestCardNameIndex());

                        cardDriver.AddCard(card, address);

                        var type = cardDriver.GetCardType().ToString();
                        type = Char.ToLower(type[0]) + type.Substring(1);
                        var jo = new JObject {
                            new JProperty("type", type),
                            new JProperty("address", string.Format("0x{0:X}", address)),
                            new JProperty("name", card),
                            new JProperty("options", string.Empty)
                        };
                        ja.Add(jo);
                        SettingsHelper.WriteSettingsFile("hardware", ja);
                        keepText = true;
                    }
                } catch (Exception ex) {
                    MessageBox.Show("Improper address");
                    Console.WriteLine(ex);
                }
            }

            return(keepText);
        }