anchor.diff:        legacy_data.Add(o);
       end;
   
  -    FConfig.Load(AProgess, APaths, ResourceLoader, FCombinedConfig);
  -
  -    MergeLegacy(legacy_data, FCombinedConfig);
  -
  -    for iter in FCombinedConfig do
  -    begin
  -      info := HeroClassInfos.Add;
  -
  -      info.Identifier := iter.Key;
  -
  -      FDestreamer.JSONToObjectEx(iter.Value as TJSONObject, info);
  -    end;
  +    Load(AProgess, APaths, legacy_data, HeroClassInfos);
     finally
       legacy_data.Free;
       hctraits.free;
  -    FCombinedConfig.Free;
  -    FConfig.Free;
     end;
   end;
   
   procedure TListsManager.LoadCreatures(AProgess: IProgressCallback;
     APaths: TModdedConfigPaths);
   var
  -  FConfig: TModdedConfigs;
  -  FCombinedConfig: TJSONObject;
  -
     crtraits: TTextResource;
     legacy_data: TJsonObjectList;
   
     i: SizeInt;
  +  shift: Integer;
  +
  +  name_count: integer;
     o: TJSONObject;
  -  iter: TJSONEnum;
  -  info: TCreatureInfo;
  -  shift: Integer;
  -
  -  name_count: integer;
  -begin
  -  FConfig := TModdedConfigs.Create;
  -  FCombinedConfig := CreateJSONObject([]);
  -
  +begin
     legacy_data := TJsonObjectList.Create(true);
     crtraits := TTextResource.Create(CREATURE_TRAITS);
     try
  
positive.code:     bldgspec.Free;
      faction_names.Free;
      legacy_data.Free;
      FCombinedConfig.Free;
      FConfig.Free;
    end;
  end;
  
  procedure TListsManager.LoadHeroClasses(AProgess: IProgressCallback;
    APaths: TModdedConfigPaths);
  var
    FConfig: TModdedConfigs;
    FCombinedConfig: TJSONObject;
    hctraits: TTextResource;
  
    legacy_data: TJsonObjectList;
    i: SizeInt;
    o, p_skills: TJSONObject;
    iter: TJSONEnum;
    info: THeroClassInfo;
  begin
    FConfig := TModdedConfigs.Create;
    FCombinedConfig := CreateJSONObject([]);
    hctraits := TTextResource.Create(HERO_CLASS_TRAITS);
    legacy_data := TJsonObjectList.Create(true);
    try
  
negative.code:   end;
  end;
  
  procedure TListsManager.Load(AProgess: IProgressCallback; APaths: TModdedConfigPaths; ALegacyConfig: TJsonObjectList;
    ATarget: THashedCollection);
  var
    FConfig: TModdedConfigs;
    FCombinedConfig, o: TJSONObject;
    iter: TJSONEnum;
    info: TBaseInfo;
  begin
    FConfig := TModdedConfigs.Create;
    FCombinedConfig := CreateJSONObject([]);
  
    try
      FConfig.Load(AProgess, APaths, ResourceLoader, FCombinedConfig);
  
      MergeLegacy(ALegacyConfig, FCombinedConfig);
  
      for iter in FCombinedConfig do
      begin
        info := ATarget.Add as TBaseInfo;
  
        info.Identifier := iter.Key;
  
        o := iter.Value as TJSONObject;
  
        FDestreamer.JSONToObjectEx(o, info);
      end;
    finally
      FCombinedConfig.Free;
      FConfig.Free;
    end;
  end;
  
  procedure TListsManager.FillSlotIds;
  const
    SLOT_IDS: array[0..ARTIFACT_SLOT_COUNT-1] of AnsiString =
  