anchor.diff:    // simulation speed
     fSIMSpeedEvent := (project as TSSMProject).controlInterface.Connection.Subscribe(aID+'.Sim_Speed');
     fSIMSpeedEvent.OnNormalEvent := HandleSimSpeedEvent;
  +  // Air SSM Emissions
  +
  +  fAirSSMEmissionsChartTotal := TChartLines.Create(Self, 'Air', 'ase', 'Emissions total', '', false, 'line',
  +      TChartAxis.Create('minutes', 'lightBlue', 'Time', 'min'),
  +      [TChartAxis.Create('g', 'lightBlue', 'Mass', 'g')]);
  +  AddChart(fAirSSMEmissionsChartTotal);
  +  fAirSSMEmissionsChartFraction := TChartLines.Create(Self, 'Air', 'ase', 'Emissions fraction', '', false, 'line',
  +      TChartAxis.Create('minutes', 'lightBlue', 'Time', 'min'),
  +      [TChartAxis.Create('g/min', 'lightBlue', 'Mass rate', 'g/min')]);
  +  AddChart(fAirSSMEmissionsChartFraction);
  +
  +
  +  fAirSSMEmissionsEvent := (project as TSSMProject).controlInterface.Connection.Subscribe(aID+'.Air_ssm_emissions');
  +  fAirSSMEmissionsEvent.OnNormalEvent := HandleAirSSMEmissions;
   end;
   
   destructor TSSMScenario.Destroy;
  
positive.code:   fSIMSpeedEvent.UnSubscribe;
    FreeAndNil(fStatistics);
    inherited;
  end;
  
  function TSSMScenario.HandleClientSubscribe(aClient: TClient): Boolean;
  
negative.code:     fSIMSpeedEvent: TIMBEventEntry;
  
      fUSLayer: TUSLayer;
  
      fAirSSMEmissionsEvent: TIMBEventEntry;
      fAirSSMEmissionsChartTotal: TChartLines;
      fAirSSMEmissionsChartFraction: TChartLines;
    public
      property running: Boolean read fRunning;
      property speed: Double read fSpeed;
      property statistics: TObjectDictionary<string, TSSMStatistic> read fStatistics;
    public
      procedure HandleAirSSMEmissions(aEvent: TIMBEventEntry; var aPayload: ByteBuffers.TByteBuffer); stdcall;
      procedure HandleGTUStatisticEvent(aEvent: TIMBEventEntry; var aPayload: ByteBuffers.TByteBuffer); stdcall;
      procedure HandleFirstSubscriber; override;
      procedure HandleLastSubscriber; override;
  