private void readElectLine(string line, PoliticalCard politicalCard)
    {
        string[] parts = line.Split (" ".ToCharArray());

        //Determine election type
        politicalCard.ElectType = gameManager.LanguageMgr.ExtractEType(parts);

        //Determine election quantity
        int quantity = 1;
        foreach(string part in parts) {
            bool isANumber;
            int conversion = stringToInt(part, out isANumber);
            if (isANumber) {
                quantity = conversion;
            }
        }
        politicalCard.ElectQuantity = quantity;
    }
    private PoliticalCard readPoliticalCard(string dataType, string dataText, string fileName, StreamReader reader)
    {
        if (dataText == "<{>") {
            PoliticalCard politicalCard = new PoliticalCard();
            string line = reader.ReadLine().Trim ();

            VType voteType = VType.ForAgainst;

            do {
                string[] lineParts;
                //Split category name from data
                lineParts = line.Split(":".ToCharArray(), 2);

                //Remove any extra whitespace from parts & set descriptive variables
                string newDataType = gameManager.LanguageMgr.StringToDataType(lineParts[0].Trim ());
                string newDataText = lineParts[1].Trim ();

                if (newDataType == "Name") {
                    politicalCard.Name = readTextLine(newDataType, newDataText, fileName);
                } else if (newDataType == "Law") {
                    politicalCard.IsLaw = gameManager.LanguageMgr.StringToBoolean(readTextLine(newDataType, newDataText, fileName));
                } else if (newDataType == "Event") {
                    bool isEvent = gameManager.LanguageMgr.StringToBoolean (readTextLine (newDataType, newDataText, fileName));
                    if (isEvent) {
                        voteType = VType.Event;
                    }
                } else if (newDataType == "Expansion") {
                    politicalCard.Expansion = gameManager.LanguageMgr.StringToExpansion(readTextLine(newDataType, newDataText, fileName));
                } else if (newDataType == "Flavor Text") {
                    politicalCard.FlavorText = readTextLine (newDataType, newDataText, fileName);
                } else if (newDataType == "For") {
                    politicalCard.ForText = readTextLine(newDataType, newDataText, fileName);
                } else if (newDataType == "Against") {
                    politicalCard.AgainstText = readTextLine(newDataType, newDataText, fileName);
                } else if (newDataType == "Discard") {
                    politicalCard.DiscardText = readTextLine(newDataType, newDataText, fileName);
                } else if (newDataType == "Elect") {
                    voteType = VType.Elect;
                    readElectLine(readTextLine (newDataType, newDataText, fileName), politicalCard);
                } else if (newDataType == "Effect") {
                    if (voteType == VType.Event) {
                        politicalCard.EventText = readTextLine(newDataType, newDataText, fileName);
                    } else {
                        politicalCard.ElectText = readTextLine(newDataType, newDataText, fileName);
                    }
                } else if (newDataType == "ID") {
                    politicalCard.Id = readTextLine (newDataType, dataText, fileName);
                }
                line = reader.ReadLine().Trim ();
            } while (line != "<}>");
            // End of outermost block

            politicalCard.VoteType = voteType;

            if (politicalCard.Id == default(string)) {
                politicalCard.Id = politicalCard.Name;
            }

            return politicalCard;
        } else {
            throw new System.Exception(string.Format("Error reading file {0}:: got \"{1}\" should be <{>", fileName, dataText));
        }
    }