anchor.diff:      procedure SetAllowAllyToSelect(aAllow: Boolean); virtual;
     public
       constructor Create(aType: TKMHandEntityType; aUID: Integer; aOwner: TKMHandID);
  -    constructor Load(LoadStream: TKMemoryStream); virtual;
  -    procedure Save(SaveStream: TKMemoryStream); virtual;
  +    constructor Load(LoadStream: TKMemoryStream); override;
  +    procedure Save(SaveStream: TKMemoryStream); override;
   
       property EntityType: TKMHandEntityType read GetType;
       property Owner: TKMHandID read GetOwner write SetOwner;
   
  -    property UID: Integer read GetUID;
       property Position: TKMPoint read GetPosition;
       property PositionF: TKMPointF read GetPositionF write SetPositionF;
   
  
positive.code:   KM_Defaults, KM_Points, KM_CommonClasses, KM_HandTypes;
  
  type
    { Common class for TKMUnit / TKMHouse / TKMUnitGroup }
    TKMHandEntity = class abstract
    private
      fUID: Integer; //unique entity ID
      fType: TKMHandEntityType;
      fOwner: TKMHandID;
      fAllowAllyToSelect: Boolean; // Allow ally to select entity
      function GetUID: Integer;
      function GetOwner: TKMHandID;
      function GetType: TKMHandEntityType;
    protected
      procedure SetUID(aUID: Integer);
      function GetPosition: TKMPoint; virtual; abstract;
      function GetPositionF: TKMPointF; virtual; abstract;
      procedure SetPositionF(const aPositionF: TKMPointF); virtual; abstract;
  
negative.code: 
  procedure TKMHandEntity.Save(SaveStream: TKMemoryStream);
  begin
    inherited;
  
    SaveStream.Write(fType, SizeOf(fType));
    SaveStream.Write(fOwner, SizeOf(fOwner));
    SaveStream.Write(fAllowAllyToSelect);
  