anchor.diff:    end;
   
     //Worker class - builds everything in game
  -  TKMUnitWorker = class(TKMUnit)
  +  TKMUnitWorker = class(TKMCivilUnit)
     public
       procedure BuildHouse(aHouse: TKMHouse; aIndex: Integer);
       procedure BuildHouseRepair(aHouse: TKMHouse; aIndex: Integer);
  
positive.code:   OldThought := fThought;
    fThought := th_None;
  
    if fCondition < UNIT_MIN_CONDITION then
    begin
      H := gHands[fOwner].FindInn(fCurrPosition, Self);
      if H <> nil then
        fUnitTask := TKMTaskGoEat.Create(H, Self);
    end;
  
    //Only show quest thought if we have been idle since the last update (not HadTask)
    //and not thinking anything else (e.g. death)
  
negative.code: end;
  
  
  //Delegate delivery to other serf
  procedure TKMUnitSerf.DelegateDelivery(aToSerf: TKMUnitSerf);
  begin
    Assert(UnitTask is TKMTaskDeliver, 'UnitTask is not TKMTaskDeliver');
  
    TKMTaskDeliver(UnitTask).DelegateToOtherSerf(aToSerf); //Update task to be used with new serf
    aToSerf.fUnitTask := UnitTask; //Set delivery task to new serf
  
    //AbandonWalk if needed and cleanup task pointer, but do not free task object, as it was delegated to other serf already
    CancelUnitTask(False);
  end;
  
  
  constructor TKMUnitSerf.Load(LoadStream: TKMemoryStream);
  begin
    inherited;
  