create questions, parts of questions, subparts of parts,
and subsubparts of subparts, all with optional point values;

create a grading table, indexed either by question number
(listing each question and the total possible points for
that question) or by page number (listing each page with
points and the total possible points for that page);

create headers and footers that are each specified in three
parts: one part to be left justified, one part to be centered,
and one part to be right justified, in the manner of
fancyhdr.