On disk format of directory (xxx_dir.vpk. data is in xxx_000.vpk, xxx_001.vpk, ...) id records "extension\0" (0 = no more extensions) "dir\0" (0 = no more dirs) "basefilename\0" (0 = no more files of this extension in this dir) orig data file crc int16 metadata size location in data files for level 0 data (word filenum, ulong offset, ulong fsize) location in data files for level 1 data (word filenum, ulong offset, ulong fsize) .. -1. uint8 metadata[] .. .. .. data files [x]step0 - class def, format def [x]step1 - generator [x]step2 - loader [ ]step3 - surrounding file monitor tools + ui A client of the archive who can't handle their persistent meta data going away (as during a reload) can say so, which will cuase their metadata to be copied away at next reload. otherwise, a reload will change the address of the meta data and maybe its size/content. insert case file found: find all files in the same data chunk load data chunk. replace old chunk of data, changing offsets in parts of files that were there. replace offset and crc in old dir record case file not found might need to add new extension might need to add new directory insert new file entry add new data to last chunk