anchor.diff:  
   destructor TKMGUIGameSpectator.Destroy;
   var
  -  I: Integer;
  -begin
  -  for I := Low(FLinesAggregator) to High(FLinesAggregator) do
  -    if FLinesAggregator[I] <> nil then
  -      FreeAndNil(FLinesAggregator[I]);
  -end;
  -
  -
  -procedure TKMGUIGameSpectator.AddLineType(aParent: TKMPanel; AIndex: Integer; ALineClass: TKMGUIGameSpectatorItemLineClass);
  +  I: TKMHandStatType;
  +begin
  +  for I := Low(TKMHandStatType) to High(TKMHandStatType) do
  +    FreeAndNil(FLinesAggregator[I]);
  +end;
  +
  +
  +procedure TKMGUIGameSpectator.AddLineType(aParent: TKMPanel; aLineType: TKMHandStatType; ALineClass: TKMGUIGameSpectatorItemLineClass);
   var
     I: Integer;
   begin
     if ALineClass <> nil then
     begin
  -    FLinesAggregator[AIndex] := TKMGameSpectatorItemLinesAggregator.Create;
  +    FLinesAggregator[aLineType] := TKMGameSpectatorItemLinesAggregator.Create;
       for I := 0 to gHands.Count - 1 do
       begin
  -      FLines[AIndex, I] := ALineClass.Create(aParent, I, fOnJumpToPlayer, fSetViewportPos, FLinesAggregator[AIndex]);
  -      FLines[AIndex, I].Visible := False;
  -      FLinesAggregator[AIndex].SetCount(FLines[AIndex, I].GetTagCount);
  +      FLines[aLineType, I] := ALineClass.Create(aParent, I, fOnJumpToPlayer, fSetViewportPos, FLinesAggregator[aLineType]);
  +      FLines[aLineType, I].Visible := False;
  +      FLinesAggregator[aLineType].SetCount(FLines[aLineType, I].GetTagCount);
       end;
     end;
   end;
  
positive.code:     if Assigned(FLines[FLastIndex, I]) then
        FLines[FLastIndex, I].Visible := False;
  
    FLastIndex := FDropBox.ItemIndex;
  
    position := 32;
    teams := gHands.Teams;
  
negative.code: 
  procedure TKMGUIGameSpectator.UpdateState(aTick: Cardinal);
  var
    I: TKMHandStatType;
    K: Integer;
  begin
    //Updates could be done every 5 ticks
    if aTick mod 5 <> 0 then Exit;
  
    //Reset all aggregators first
    for I := Low(TKMHandStatType) to High(TKMHandStatType) do
      if FLinesAggregator[I] <> nil then
        FLinesAggregator[I].ResetItems;
  
    //Collect data from lines items - which to show and which not - into aggregator
    for I := Low(TKMHandStatType) to High(TKMHandStatType) do
      for K := 0 to Length(FLines[I]) - 1 do
        if FLines[I, K] <> nil then
          FLines[I, K].Update;
  
    //Set visibility for items, by aggregated data
    for I := Low(TKMHandStatType) to High(TKMHandStatType) do
      for K := 0 to Length(FLines[I]) - 1 do
        if FLines[I, K] <> nil then
          FLines[I, K].UpdateItemsVisibility;
  