private void recalculateTotal(bool fireUpdate_)
    {
      var setups = new[]
      {
        new {InnerField=FALField.Yield, Mult=1d,RiskWeight=false},
        new {InnerField=FALField.ASWyy, Mult=1d,RiskWeight=false},

        new {InnerField=FALField.YieldFwd, Mult=1d,RiskWeight=false},
        new {InnerField=FALField.ASWFwd, Mult=1d,RiskWeight=false},

        new {InnerField=FALField.YieldCarry,Mult=1d,RiskWeight=false},
        new {InnerField=FALField.ASWCarry,Mult=1d,RiskWeight=false},

        new {InnerField=FALField.YieldRoll,Mult=1d,RiskWeight=false},
        new {InnerField=FALField.ASWRoll,Mult=1d,RiskWeight=false},

        new {InnerField=FALField.YieldRollCarry,Mult=1d,RiskWeight=false},
        new {InnerField=FALField.ASWRollCarry,Mult=1d,RiskWeight=false},

      };

      foreach (var setup in setups)
      {
        var dwv = new RiskWeightedStructureValue();
        foreach (var v in Lines.Take(m_structure.Components.Count))
          dwv.AddLeg(
            name_: v.Bond,
            weight_: v.LegMultiplier,
            duration_: setup.RiskWeight ? v.GetValue(FALField.MacaulayDuration) : 1d,
            legUnit_: v.GetValue(setup.InnerField),
            recalc_: false);

        dwv.Recalc();

        CombinedLine.SetValue(setup.InnerField, dwv.Total*setup.Mult, fireUpdate_);
      }

    }