Hello Thierry > From an engineering point of view, couldn't the code set everything with > some: > > \ifx\engineversion\undefined > \else > \input engine.tex > \fi > > ? So that it's easier to see what depends on the engine and in order > for modifications to the engine to be severed from the rest of the code? Very little of the code is engine-specific, and the parts that are are largely in separate files as you suggest. Broadly - l3names needs to save primitives in a predictable way, so checks for example for pdfTeX and LuaTeX names for the same concepts - l3sys sets up engine-specific paths - l3backend is split by backend: you likely are using dvips so l3backend-dvips.def needs to be loaded I see Phelype has addressed the other parts. Joseph