anchor.diff:  interface
   
   uses Classes,
  -     KM_Units_Warrior;
  +     KM_CommonTypes, KM_Terrain, KM_Units_Warrior;
   
   type    
   
     TKMGroup = class
     private
   
  -    fCommander: integer; // Index of squad commander in fMembers
  +    fCommander: TKMUnitWarrior; // Index of squad commander in fMembers
       fMembers: TList; // Warriors. List of TKMUnitWarrior.
       fUnitsPerRow: Integer;
   
  
positive.code:   public
  
      constructor Create;
  
      property Count: integer read GetCount;
      property Members[Index: Integer]: TKMUnitWarrior read GetMember;
      property UnitsPerRow: Integer read fUnitsPerRow write SetUnitsPerRow;
  
negative.code: 
  procedure TKMGroup.SetNewCommander;
  begin
    fCommander := nil;
    if fMembers.Count = 0 then exit;
    // Calculation of new Commander
  end;
  
  
  procedure TKMGroup.SetUnitsPerRow(Qty: Integer);
  begin
    fUnitsPerRow := EnsureRange(Qty, 1, fMembers.Count+1);
  end;
  
  
  function TKMGroup.AddMember(Warrior: TKMUnitWarrior):Integer;
  begin
    Result := fMembers.Add(Warrior); // No check on Warrior in group
    if (fCommander = nil) then SetNewCommander;
    //todo: Set Self to Warrior;
  end;
  
  
  function TKMGroup.GetPosition(PosDir: TKMPointDir): Boolean;
  begin
    Result := False;
    if fCommander = nil then exit;
    PosDir.Loc := fCommander.GetPosition;
    PosDir.Dir := Word(fCommander.Direction);
    Result := true;
  end;
  
  end.