Highly customised variable-data documents make automatic layout of the resulting publication hard. Architectures for defining and processing such documents can benefit if the repertoire of layout methods available can be extended smoothly and easily to accommodate new styles of customisation. The Document Description Framework incorporates a model for declarative document layout and processing where documents are treated as functional programs. A canonical XML tree contains nodes describing layout instructions which will modify and combine their children component parts to build sections of the final presentation. Leaf components such as images, vector graphic fragments and text blocks are 'rendered' to make consistent graphical atoms. These parts are then processed by layout agents, described and parameterised by their parent nodes, which can range from simple layouts like translations, flows, encapsulations and tables through to highly complex arrangements such as constraint-solution or pagination. The result then becomes a 'molecule' for processing at a higher level of the layout tree. A variable and reference mechanism is included for resolving rendering interdependency and supporting component reuse. Addition of new layout types involves definition of a new combinator node and attachment of a suitable agent.