anchor.diff:      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;
  
positive.code:   // simulation speed
    fSIMSpeedEvent := (project as TSSMProject).controlInterface.Connection.Subscribe(aID+'.Sim_Speed');
    fSIMSpeedEvent.OnNormalEvent := HandleSimSpeedEvent;
  end;
  
  destructor TSSMScenario.Destroy;
  
negative.code:   fSIMSpeedEvent.UnSubscribe;
    FreeAndNil(fStatistics);
    inherited;
  end;
  
  procedure TSSMScenario.HandleAirSSMEmissions(aEvent: TIMBEventEntry; var aPayload: ByteBuffers.TByteBuffer);
  var
    timeStamp: double;
    totalEmission: double;
    fractionalEmission: double;
  begin
    aPayload.Read(timeStamp);
    aPayload.Read(totalEmission);
    aPayload.Read(fractionalEmission);
  
    fAirSSMEmissionsChartTotal.AddValue(timeStamp, [totalEmission]);
    fAirSSMEmissionsChartFraction.AddValue(timeStamp, [fractionalEmission]);
  end;
  
  function TSSMScenario.HandleClientSubscribe(aClient: TClient): Boolean;
  