void ConstructExchangeItems(ILinkableComponentVersion1 component1, 
            Dictionary<string, Utilities.Standard1.ExchangeItemV1ModelXml> v1ModelXmlInputs,
            Dictionary<string, Utilities.Standard1.ExchangeItemV1ModelXml> v1ModelXmlOutputs)
        {
            List<BaseInput> convertedInputs = new List<BaseInput>();
            List<BaseOutput> convertedOutputs = new List<BaseOutput>();

            OpenMI.Standard.IInputExchangeItem input1;
            string engineVariable, description;
            Utilities.Standard1.ExchangeItemV1ModelXml v1Model;

            for (int n = 0; n < component1.InputExchangeItemCount; ++n)
            {
                input1 = component1.GetInputExchangeItem(n);

                v1Model = v1ModelXmlInputs
                    .Values
                    .Where(v =>
                        v.Quantity.Id == input1.Quantity.ID
                        && v.ElementSet.Id == input1.ElementSet.ID)
                    .SingleOrDefault();

                engineVariable = EngineVariable(
                    string.Format("Input{0}", n),
                    input1.Quantity.ID, input1.ElementSet.ID);

                description = string.Format("{0}\r\n{1}",
                    input1.Quantity.Description, input1.ElementSet.Description);

                convertedInputs.Add(
                    NewInputSpaceTime(engineVariable, description,
                        input1, v1Model, input1.ElementSet.ElementCount));
            }

            OpenMI.Standard.IOutputExchangeItem output1;

            for (int n = 0; n < component1.OutputExchangeItemCount; ++n)
            {
                output1 = component1.GetOutputExchangeItem(n);

                v1Model = v1ModelXmlOutputs
                    .Values
                    .Where(v =>
                        v.Quantity.Id == output1.Quantity.ID
                        && v.ElementSet.Id == output1.ElementSet.ID)
                    .SingleOrDefault();

                engineVariable = EngineVariable(
                    string.Format("Output{0}", n),
                    output1.Quantity.ID, output1.ElementSet.ID);

                description = string.Format("{0}\r\n{1}",
                    output1.Quantity.Description, output1.ElementSet.Description);

                convertedOutputs.Add(
                    NewOutputSpaceTime(engineVariable, description,
                        output1, v1Model, output1.ElementSet.ElementCount));
            }

            AddRange(convertedInputs);
            AddRange(convertedOutputs);
        }