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:   fOnJumpToPlayer := aOnJumpToPlayer;
    fSetViewportPos := aSetViewportPos;
  
    FLastIndex := 0;
  
    SetLength(FLines, LINES_CNT);
    SetLength(FLinesAggregator, LINES_CNT);
  
    AddLineType(aParent, 0, nil);
    AddLineType(aParent, 1, TKMGUIGameSpectatorItemLineResources);
    AddLineType(aParent, 2, TKMGUIGameSpectatorItemLineWarFare);
    AddLineType(aParent, 3, TKMGUIGameSpectatorItemLineHouses);
    AddLineType(aParent, 4, TKMGUIGameSpectatorItemLineConstructing);
    AddLineType(aParent, 5, TKMGUIGameSpectatorItemLinePopulationSLR);
    AddLineType(aParent, 6, TKMGUIGameSpectatorItemLinePopulationHouseWorkers);
    AddLineType(aParent, 7, TKMGUIGameSpectatorItemLineArmyInstantenious);
    AddLineType(aParent, 8, TKMGUIGameSpectatorItemLineArmyTotal);
    AddLineType(aParent, 9, TKMGUIGameSpectatorItemLineArmyKilling);
    AddLineType(aParent, 10, TKMGUIGameSpectatorItemLineArmyLost);
  
    //Create DropBox after pages, to show it above them
    FDropBoxPanel := TKMPanel.Create(aParent, aParent.Width - DROPBOX_W - 10, 0, DROPBOX_W + 10, 30);
  
negative.code:   private
      FDropBoxPanel: TKMPanel;
      FDropBox: TKMDropList;
      FLastIndex: TKMHandStatType;
  
      FOnJumpToPlayer: TIntegerEvent;
      FSetViewportPos: TPointFEvent;
  
      FLinesAggregator: array [TKMHandStatType] of TKMGameSpectatorItemLinesAggregator;
      FLines: array [TKMHandStatType] of array [0..MAX_HANDS - 1] of TKMGUIGameSpectatorItemLine;
  
      procedure AddLineType(aParent: TKMPanel; aLineType: TKMHandStatType; ALineClass: TKMGUIGameSpectatorItemLineClass);
      procedure ChangePage(Sender: TObject);
    public
      constructor Create(aParent: TKMPanel; aOnJumpToPlayer: TIntegerEvent; aSetViewportPos: TPointFEvent);
  