/// <summary>
        /// handle structure update
        /// </summary>
        /// <param name="FIXMsg"></param>
        public void ReceiveStructureUpdate(EASYROUTERCOMCLIENTLib.IFIXMessage FIXMsg)
        {
            m_bSubscribedAdditionalInfo = true;

            int nNumber = FIXMsg.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESDecimalPlaces);

            int nPrefRiskValue = 0;
            if (FIXMsg.GetNumber(out nPrefRiskValue, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESPreferredRiskArrayType))
                m_nFIXTagESPreferredRiskArrayType = nPrefRiskValue;

            if(nNumber != 0)
                m_nESDecimalPlaces = nNumber;

            double dPriceMovement = 0.0;
            if (FIXMsg.GetDouble(out dPriceMovement, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESPriceMovement ))
                m_nFIXTagESPreferredRiskArrayType = nPrefRiskValue;

            if (dPriceMovement != 0)
                m_dPriceMovement = dPriceMovement;

            string sStrategyCode = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESStrategyCode);
            if (sStrategyCode != string.Empty)
                m_sStrategyCode = sStrategyCode;

            string sSecurityID = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagSecurityID);
            if (sSecurityID != string.Empty)
                m_sSecurityID = sSecurityID;

            string sIDSource = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagIDSource);
            if (sIDSource != string.Empty)
                m_sIDSource = sIDSource;

            string sCombinedCommodityCode = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESCombinedCommodityCode);
            if (sCombinedCommodityCode != string.Empty)
                m_sCombinedCommodityCode = sCombinedCommodityCode;

            string sClearingHouse = FIXMsg.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESClearingHouse);
            if (sClearingHouse != string.Empty)
            {
                m_sClearingHouse = sClearingHouse;

                System.Diagnostics.Debug.WriteLine(this.ESTickerMnemonic + " " + m_sClearingHouse);
            }

            int nOptionType = 0;
            if (FIXMsg.GetNumber(out nOptionType, EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagPutOrCall))
            {
                //defaults to 1 - call if never here
                m_nOptionType = nOptionType;
            }

            //RISK ARRAYS
            string sRiskArray = string.Empty;
            int nRiskArrayType = 0;

            if (FIXMsg.HasGroup(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESNoRiskArrays))
            {
                EASYROUTERCOMCLIENTLib.IFIXGroup defaultGroup = FIXMsg.GetGroupByTag(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESNoRiskArrays, null);

                if (defaultGroup != null)
                {
                    int nDefaultCount = defaultGroup.get_NumberOfGroups(null);

                    for (int j = 0; j < nDefaultCount; j++)
                    {
                        EASYROUTERCOMCLIENTLib.IFIXGroup singleDefaultGroup = defaultGroup.GetGroupByIndex(j);

                        int nValue = singleDefaultGroup.get_AsNumber(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESRiskArrayType);
                        if (nValue != nRiskArrayType)
                        {
                            CreateRiskArray(nValue, sRiskArray);
                            nRiskArrayType = nValue;
                        }
                        string sValue = singleDefaultGroup.get_AsString(EASYROUTERCOMCLIENTLib.FIXTagConstants.esFIXTagESRiskArrayValue);

                        if (sValue != null)
                        {
                            sRiskArray = sRiskArray + sValue + "\\";
                        }
                    }
                }
            }
            CreateRiskArray(nRiskArrayType, sRiskArray);
        }