Version 1.5d
released 08/19/2001
This file is intended to let you know how the Template you just grabbed
for your game has changed since the last time you wrote a game with it.
If you've never used the Template before, the only thing of interest
here to you is the version number --- so that the next time you use
it you'll know where to start looking for changes.
Also, whenever you send mail to template-dev, please include the
full version information in the header of this page. Note this
information may tend to change as you incorporate patches.
Revisions are listed in chronological order. Each is given in three
sections: USER is material of interest to all Template users.
CZAR isn't of interest to most users but the Czar should read
it. Everything beyond what even the Czar should know is marked
HACKER, for the benefit of those who do really serious
fiddling. Note that all three will often give a very short description of an
area of change and point you towards appropriate documentation. Also, really
teensy tweaks, especially to docs, might not be listed anywhere.
Since we may have discovered issues (and maybe patched them)
more recently than your copy, that information is kept
externally.
Note there is never any reason for a GM team, even the Czar,
to modify this page.
1.0
released around 9/1998
Initial release
1.1
released 10/31/1998
1.1 USER
- You can now define ability entries in
LaTeX/Lists/abilities.tex
that take arguments, so that you can assign one person \Afencing{1}
and another \Afencing{3} without having to define two Fencing abilities.
(Similarly for ability-like things your Czar creates.) See \listabil
and \A(something) in the glossary.
Czar should see extractables.html.
- Cinematic combat cards are prettier (look and you'll see); they insert
the "Requires:" portion of the requirements part for you; and they
allow you to specify, e.g. \h3 to get "HIT 3" instead of a mere "HIT".
- bin/massdo has been replaced by bin/bulk; see
bulk.html.
- bin/prep allows you to prep multiple characters at once, including *.tex;
see printing.html.
- bin/printup first checks everything it's planning to print, then
either aborts (if anything was really bad), asks for confirmation
(if things were a little bad), or just goes (if everything was OK).
See printing.html.
- For each "foo" printup is planning to print, it checks whether
foo.dvi is actually younger than foo.tex, and if so warns and
asks for confirmation before printing. Similar warning and
request for confirmation are given if printers have long queues.
See printing.html.
- printup suppresses the burst page of each job to save paper.
- prep and printup arrange for each sheet printed for a character to
have that character's name at the upper right, for easier
packet-stuffing.
- the bin scripts that take 'shortname' arguments (e.g. extractor and
injector, for fields; prep and printup for -only and -except)
accept unique abbreviations, rejecting ambiguous or unidentifiable
ones.
- Extractable lists now use \extract, \mention, and \note --- see
charsheets.html.
- printup allows you to do more than one characer at once; it does
some floating-queue things to avoid flooding the printers ---
see printing.html.
- environment.html correctly tells you to
put aliases for multiple-game development in your .cshrc.mine,
not your .environment (since aliases there won't work).
- When using the automatic random
number assignment, you can have a number defined multiple times
as long as the definitions agree.
- When using the automatic random
number assignment, if you aren't encoding anything at all
into some set of numbers (say, itemnum), it will assume
{plain} if you just say { }.
- The playerlist now sorts by player name after character name
in case of identical or, more likely, omitted character names.
- Zephyr class template-gms is documented;
consider subbing, especially the Czar.
- The pieces of paper in packet-style memories now have the character
name on them so you don't lose them.
- Several types of cards have shrunk some to make sure there's enough
margin between cards on a page for printer slop.
1.1 CZAR
- We ask that you tell template-dev@mit.edu
that you're using the Template (and what version) so that we know
to send you bug fixes.
- The off-athena.html page for people using the Template outside MIT
has been started, though not finished.
- bin/numbers accepts spec files
that don't define any properties.
- Re-assigning numbers without re-generating attempts to preserve
old auto-assignments if they agree with current .tex descriptions;
see numbers-assign.html.
- general item macros (\normalitem, \bulkyitem, \unstashitem) are
now always defined in Lists/items.tex in terms of \specialitem
(which character.sty and items.sty define to do what they want).
You can use this to define your own \kindofitem general macros
in Lists/items.tex. See the comments.
- Stat cards and associated Death Report Forms are somewhat more nicely
formatted and do nicer self-resizing, based on Ken Clary's stuff.
1.1 HACKER
- bin scripts: the parsing of -only and -except has moved from
parseconfigs.pl to prep and printup (the only ones that used it).
- most of the bin scripts now suck up entire files and parse across
lines, to make parsing multi-line occurrences easier.
- printup has vastly changed to deal with multiple-character
floating-queue printing.
- LaTeX/Mech/sheets.sty, bin/prep, and bin/printup between them
arrange to have charname appear on the upper right corner of
sheets printed via printup.
- nested extractable enviroments and duplicated extractable environments
are forbidden by character.sty, since they'd make Perl parsing tough.
- the mass-edit scripts (extractor, injector, invertmap) have massively
changed to use \extract, \mention, \note and thereby deal properly
with multi-line entries, latex comments, etc, instead of requiring
single-line entries.
- item cards and ability cards (and maybe other things too) have switched
from using the picture environment to using normal latex and tex
commands to draw.
1.2
released 1/29/1999
1.2 USER
- The setenv we recommend you put in your
.environment is much shorter and simpler.
- Money is now an extractable; \cash{amount} in the charsheet will
produce an appropriate set of change. You can still use
LaTeX/Central/money.tex to produce pools of unowned money.
- \statcard (or whatever statcard macros your Czar makes) is called
a bit different, as is \customstat; see
statcards.html.
- prep and printup deal better with missing extractable fields.
- Two bin/printup bugs are fixed, one which misreported printer queues
and one which generated bogus warnings.
- The "character name appears in upper righthand corner of bluesheets
etc printed for the character via prep and printup" hack has been made
more robust.
- The character list has moved from LaTeX/Central/charlist.tex
to LaTeX/Lists/characters.tex for consistency.
1.2 CZAR
- You define statcards a bit differently; see
statcards.html, but even more, see the
instructions in custom.sty.
- It is now safe to put things like \newcommand in the character list;
they'll never be executed more than once. Of course, most game-wide macros
still belong in custom.sty intead.
- You get to set what the playerlist will use to alphabetize by
(first name then last name, or last then first, or whatever) in
playerlist.tex. A couple of bugs in ordering are also fixed in playerlist.sty.
1.2 HACKER
- We do some "intercepting" of .sty files to work around some newtex
problems; see the comments in LaTeX/Styles/epsf.sty, fancyheadings.sty,
and rotate.sty (and maybe others).
- The bin/* scripts that call latex set $ENV{shell_escape} to true
so that even if the GMs don't set it in their
.environment for security, the scripts
will work for them.
- \eachchar has been rewritten (with help of \newchar) to iterate
through characters without re-\input'ing the character list so that
things like \newcommand there are safe.
1.3
released 3/4/1999
1.3 USER
- The material in LaTeX/Examples has moved into LaTeX/Central/misc-*.tex.
There are additional misc-*.tex files there as well.
- You may now use \secret{stuff} in an extractable list to get something
printed without being listed on the charsheet (for instance, you could get
an ability card to put inside a memory packet this way). Secret item cards
are printed on separate sheets from non-secret ones and marked "SECRET"
(ditto for other tex-type extractables); secret bluesheets and so on
have "SECRET My Name Here" in the upper right instead of "My Name Here."
- Character stats are now in LaTeX/Lists/characters.tex with other
centralized info, rather than being defined in the charsheet. Statcards
are made automagically by LaTeX/Central/stats.tex; you can make small sets
in Central/misc-stats.tex.
- Similarly, you can make small sets of badges with
LaTeX/Central/misc-badges.tex.
- The badge-making files no longer warn you about duplicate badge numbers.
- (Mostly Czar) The charinfo field "group" used to put batches of
characters together on the playerlist has been changed to "clump" to
avoid confusion with bluesheet-type groups; \group and \groupasis have
therefore changed to \clump and \clumpasis.
- There are some new pronouns,
and you can make local ones for particular sheets with
\newpronoun.
- To have a character's badge be ghostly (reverse-video), you put
something (anything) in the "ghost" charinfo field
(just after badge number and desc).
- There is a rules.tex document in LaTeX/Central which you can use to
get general Template features and look-and-feel.
- charinfo fields can have defaults (set by the Czar in custom.sty),
instead of being blank when you don't specify them. This can be
useful for stats in particular. The Czar should document such defaults
in LaTeX/Lists/characters.tex.
- The numbers script is more robust on less powerful machines
and, if it runs out of memory anyway, fails more cleanly.
- printup produces a queue-map.(number) file to let you identify the
files it puts in the printer queue (in case you want to lprm some) without
putting sensitive information in the queue where players might see it.
This file is automatically removed when printup quits.
- In the "character name appears in upper righthand corner of bluesheets
etc printed for the character via prep and printup" hack, a problem with
ligatured parts of names vanishing has been corrected.
- \Ccharacter insists on having its argument in braces, so that
it doesn't silently turn into a blank if you omit them.
- Sheets of cards, mempackets, etc, print with page numbers on them.
- There's an index.html with a table of
contents of these docs (intended to have a by-topic index later).
1.3 CZAR
- LaTeX/Mech has moved to LaTeX/Styles.
- You define statcards in a simpler fashion; see instructions in
custom.sty.
- There are no longer collect-type extractables.
- The card-making parts of LaTeX/Central/badges.tex have moved
to Styles/badges.sty; Central/badges.tex and misc-badges.tex use that
style.
- cards.sty is now smarter; it handles card
placement for you as well as sizing the card to fit both front and back
and center them on each other if they're different sizes. This means you
now use \doublesidecards, \singlesidecards, or \mirrorsidecards, each of which
takes the margins you want around each card, and it puts
as many on the page as it can. It also puts a visible frame about the card,
so that you know where to cut if the sides are different sizes.
- \useformat in custom.sty allows you to set non-blank default values
for charinfo fields. See the comments there.
- Numbers generation requires a "memory:" flag for more than four digits.
1.3 HACKER
- The implementations of \eval@char and \@die, and the scope of \<,
have changed in game.sty.
1.4
released 6/24/1999
1.4 USER
- All tex-type extractables are defined in terms of an intermediate
macro, exactly as items always have been. E.g. abilities are defined
via \newcommand\Amyabil{\ability{name}{desc}{victim sees}}; combatcards
are defined similarly with \combatcard. This guarentees that you can easily
give a character a unique ability without defining it in Lists/abilities.tex
first, by doing "\extract \ability{name}{desc}{victim sees}" directly.
The examples in LaTeX/Lists/*.tex and Charsheets/template.tex hopefully
make it obvious what to do.
- bin/printup has been fixed to not make lpr upset when the user
doesn't have env var LPROPT set.
- item card macros (\specialitem, \normalitem, \bulkyitem, \unstashitem)
now have separate arguments for "name" (short, appears on character sheet
and at top of card) and "description" (often blank, sometimes long, doesn't
appear on charsheet, comes out small on card).
- a Styles/signs.sty is provided to make room signs with, and
Central/signs.tex has examples using it. The Czar may well wish to
fiddle with the precise layout of the signs.
- Important! Player-relevant data has been separated
out of LaTeX/Lists/characters.tex into LaTeX/Lists/players.tex, where it is
set with \player analogously to \newchar. See
charinfo.html, and even more see
characters.tex comments, players.tex
comments, and (for the Production Czar)
custom.sty comments.
- GMs are strongly encouraged to use \newdef when defining macros
(e.g. in LaTeX/Lists/*.tex) instead of \newcommand. Most Template-supplied
macros that GMs are expected to use are defined with it. Please see
macro-glossary.html about \newdef.
- Stat cards try harder to look nice; very long stat values will
line-wrap. Also, the card will do the stats single-column if it can
do so without stretching the height.
- The bin/* scripts produce slightly nicer latex error messages.
- bin/printup is updated so that it will deal both with Athena 8.2
machines talking to pre-lprng printers and with Athena 8.3 machines
talking to lprng printers. With the cross-combinations it's less happy,
but the failure modes shouldn't be catastrophic.
1.4 CZAR
- Important! game.sty now contains only TeX magic that
you don't need to touch; all the global customizations (incl charinfo fields)
are set in custom.sty, all of which is stuff for you to customize.
Other global customizations you want to do also belong in custom.sty.
See custom.sty comments.
- As a side effect of the game.sty/custom.sty division, instead of
using \usepronouns to make global pronouns, you just do a bunch of
\newpronoun calls, the way GMs can do in individual sheets for
local pronouns. See charinfo.html,
macro-glossary.html, and
custom.sty comments.
- sheets.sty \newcommand's \sheetname to "Miscellaneous Sheet" so that
you can use [sheets] as a complete style by itself if you don't feel like
making a new one. Styles that use sheets.sty therefore \renewcommand
\sheetname to whatever they like.
- The \@idempotent macro is available to make style files safe
against multiple inclusion; see the glossary.
- You should be particularly sure to read what
macro-glossary.html has to
say about \newdef, so that you can explain it when GMs ask you.
1.4 HACKER
- \newdef and \renewdef are supplied by the newdef.sty file.
You could use this style outside the Template.
- The epsf.sty interceptor has changed from \input'ing the non-newtex
epsf.sty (which in athena 8.2 was OK) to containing the actual code that
was in athena 8.2 epsf.sty, because in athena 8.3 the non-newtex epsf.sty
is the same as the broken newtex version.
1.5
released 01/28/2000, followed by patch releases (below)
1.5 USER
- Everything is based on latex2e (the new Athena default),
not latex2.09 (the former Athena default).
See the latex2e author guide in postscript,
dvi, or
html for information.
The most obvious changes are that instead of
\documentstyle[epsf,doublespace,12pt]{article}
in which "12pt" is an option to article, but
"epsf" and "doublespace" are separate packages (.sty files), you do
\documentclass[12pt]{article}
\usepackage{epsf}
\usepackage{doublespace}
% or just \usepackage{epsf,doublespace}
If you use \documentstyle, latex2e will go into 2.09-compatibility mode.
- The necessary dotfiles setup
(formerly in environment.html) is different.
Note that you are no longer asked to set shell_escape; if you still have this
around, we recommend dropping it.
- Scripts are used via aliases for the gm script.
- Character packet extracts and production have changed to support things
like extract suites, extract multiplicities, and future extractable
powers. The prep/printup scripts have been replaced with the single
"packets" script; see
printing-packets.html for that and
printing-misc.html for non-packets
printing (that's the same as it was, just a docs split).
Timestamps of .dvi vs .tex files are no longer compared at dvips time,
since that did not at all guarantee the .dvi was not stale
anyway (only re-latex'ing does that; Makefiles don't work well for tex).
Charsheets/Prep is gone (see packets docs; note things are usually
put into /tmp to save space (see --ingame option)). Also, charfile
names should not have ^s in them, as extracted files delimit with that.
- \extract, \mention, \note need braces (because they do a lot more now).
\extract, \mention, \secret all take an optional multiplicity argument,
e.g. \extract[3]{ whatever } to do three whatevers at once.
See charsheets.html,
Charsheets/template.tex,
glossary.
- Suites of extractables are available.
(Note that the mass-editing scripts
are not suite-aware.)
- You can use \frobbies to have
things that you define in charsheets
available in their extracts (previously the extracts would be screwed).
- The default header on sheets is smarter about spacing the lines
that give the game name and sheet type, and horizontally centers the
sheet name. Its icon can be set per-sheet with \useicon
(see glossary) if you really want.
- Multiple lines in the attribution argument of \topquote
right-shift correctly.
- A bug in the spacing of Death Report Forms has been fixed
(bug was in 1.4, patched in 1.4a).
- The charname-in-corner-of-sheet hack now works correctly with the
new (8.3) Athena release (also patched (differently) in 1.4a).
- Cards are a bit smarter; you can just use \newpage or \clearpage
to start a new page, as you would usually do in latex (so the \cardflush
macro that cards previously required instead is gone).
- A Whitesheets style has been added for documents that are
game items. It is also a list-type extractable, but does not
get printed with the charname on it (would be dumb for ingame things).
If you use these, you probably want to make your Charsheets non-white
(gray and yellow have been used in the past) to distinguish them.
- An Ingestibles style has been added to make (game item) ingestibles
with a similar look-and-feel to memory packets. They can be used
as a (tex-type) extractable, but since most games don't use them
their use as such is initially commented out. If you use these,
you probably want to do them on white paper (as game items) and
put memory packets on green/blue paper (as not-ingame).
1.5 CZAR
- You may wish to see the latex2e class and package writers' guide in
postscript,
dvi,
or html
for latex2e differences in .cls and .sty files. Of particular importance
are that instead of
\input foo.sty
to get other style files, you
\RequirePackage{foo}
, and that you should put
\ProvidesPackage{foo}
at the top of a foo.sty you write
so that latex can verify that it's getting the right thing.
- We make use of the graphicx (extended graphics; documentation in
postscript,
dvi)
package for postscript figures (\includegraphics instead
of epsf.sty and \epsfbox) and rotations (\rotatebox, or \includegraphics
options, instead of rotate.sty and \rotate). (It has other uses too, but
those are the changes you're likely to notice in .sty files.)
- The prep/printup configuration files bin/game.config and paper.config
have replaced by the single (and shorter) packets.config file.
See printing-packets.html; most
scripts that read packets.config take an optional
--config
argument to use a different one, so that GMs can use different sets of
printers and so on. Note that the game.config "paths" information
of what directories are where, which teams rarely if ever changed,
is not in packets.config; instead all paths have defaults and you
can use the optional .structure file
to rearrange them.
- cards.sty takes the card type
and card margins 2e-style (e.g. \RequirePackage[double,.25cm]{cards}).
See cards.html.
- The "must begin with `\list'" restriction on list-type macros has
vanished (though it's still a useful convention).
- \listsheet has been provided on which to base list-type macros;
see list-extractable.html
and of course the glossary.
- LaTeX/Postscript/bigdagger.ps has been replaced with dagger.eps,
which is the same picture (and is used as background by the playerlist)
but which, being Encapsulated PostScript, can also be used as an icon.
It's a good thing to use instead of the dead smiley face if you don't
have a game-specific icon.
(e.g. mv icon.eps smiley.eps; ln -s dagger.eps icon.eps)
- The fold-and-staple and manila-envelope methods for memory packets
have been generalized to
mechanics-packet.sty,
which is now the base for both
memory packets and the new
ingestibles and with which
you can easily define new styles for such mechanics.
- The "put character name in corner when printing sheets for a char packet"
code in sheets.sty has been encapsulated in a \docharnamehere macro.
Charsheets (character.sty), Whitesheets (whitesheet.sty), and any new
sheet styles you make that shouldn't have the charname added
just \renewcommand\docharnamehere{} so it doesn't do anything.
Conversely, you could copy the \docharnamehere code for a list-type
extractable style not based on sheets.sty to get charnames there.
- \eachchar and \eachcharaction have changed somewhat, mostly to avoid
having to go through contortions to get the current charmacro string.
See custom.sty and/or the
glossary if you use these macros.
- The playerlist interface is slightly different; see
playerlist.tex comments.
Also, custom.sty defaults "clump" to "unlisted".
- The html on how to add a new extractable has been split up into
tex-extractable.html and
list-extractable.html
to avoid all the "for tex, ... for list, ..." back-and-forthing.
- \useicon is defined and used in
sheets.sty to let you
vary per-style (or even per-sheet) what icon is in the \name header,
including omitting the icon. The default is icon.eps
(in LaTeX/Postscript), which used to be header.ps (but \useheader
etc would be terribly misleading). Also, the default sheet \me size
has been reduced from \Huge to \Large so as not to jump out at people
across the room so much.
1.5 HACKER
- There are oodles of docs on latex2e and new packages in /mit/newtex.
- secret.sty no longer exists and perl (formerly prep/printup, now packets)
no longer produces and deals with separate foo_items-secret.tex files;
the extractable style is smarter and DTRT with \secret so that they
come out the same way as before (that is, on separate pages at the end,
marked as Secret). Relevant code in character.sty, charextracts.sty,
extractable.sty, bin/packets.
- The "interceptors" are all gone. ((1) gave up hope that the problem
code would be changed; (2) with latex2e we now have workarounds for all
the problems.)
- Some (though not all) ps tricks have been replaced by use of
the color package (see graphicx docs).
- outsrc.sty is no longer distributed with the Template (it requires
security holes); you can still get it from ~jemorris/Public.
- cards.sty does not \RequirePackage{extractable} itself since
tex-type extractables are supposed to do that themselves anyway (and have
been doing so), while list-types shouldn't and one could make
a list-type cards extractable (or, more likely, non-extractable-type cards,
like badges and statcards) which don't want extractable.sty.
- game.cls adds an \add@to@macro tool that simulates latex.ltx's
\g@addto@macro macro-building behavior (this may or may not
make it into the glossary sometime). This helps avoid \newtoks;
only one toks is made, \tmp@str, which is considered available to
packages (so they don't \newtoks much either). (All \tmp@str usage
is purely temporary; let it out of your sight, it might change.)
- game.cls toss-ahead macros: \? behavior can be altered with
\toss@without@braces (better use group limiting!); \scan's tossing
respects \space@tossed as \? already has. See code.
- game.cls defines \name so that its redefinition of \me is global.
1.5a (patch release)
released 03/27/2000
1.5a USER
- Just fixed a stupid docs bug in Lists/abilities.tex.
1.5b (patch release)
released 04/06/2000
1.5b USER
- Fixed a namespace collision with internal LaTeX macros that caused floats
(figures and tables (but not tabulars)) to crash and burn.
1.5c (patch release)
released 05/27/2000
1.5c USER
- Fixed the default (commented out) ingestible macro definitions for
charsheets to not leave the third argument hanging around.
1.5d (patch release)
released 08/19/2001
1.5d USER
- Dropped the recommended aliasing of
dvips -R
from
dotfiles.html.
(While it disables shell escapes as desired, it also loses the ability
to print foo.dvi directly with
dvips -Pprintername foo
instead of
dvips foo -o ; lpr -Pprintername foo.ps
.)
- Fixed bin/packets' failure to cope with TeX's failure to produce a .dvi
from .tex files that don't typeset anything, which lead to erroneous
errors for empty extractable lists.
- Fixed an ambiguity in bin/gm so that Perl no longer emits a (harmless
but annoying) warning about CORE::chdir resolution.
- Caused a badge's Not Here and identity sides to join at the top instead
of at the bottom, so when you tape it to your chest your face doesn't
flop upside-down.
- Fixed a game.cls bug that made the spaces after the semicolons in calls
to \newchar (or \player) in LaTeX/Lists/characters.tex (players.tex)
non-optional.
- Brought LaTeX/Central/rules.tex
up to speed on the improvements there've been in the Standard Rules' own,
vanilla-latex rules template.
- Put \gamedate on money, so that if it's stashed by a PC in one run
and found during another it's at least potentially noticeable
as being from the wrong run.
- The bin/{doc,packets,preliminary} scripts fixed their "what stuff in
this directory is relevant to me?" file tests to not be thrown off
by AFS, and to ignore subdirectories.
- The gm script fixed its "which things in bin/ are actually scripts?"
check to not be fvcked by AFS. This merits updating your copy of gm.
- The "packets" script (under -a / --all-characters) and "preliminary"
script (always) now ignore dotfiles (.*tex); these can't be latex'd
anyway (try it) and are almost certainly emacs lockfiles or some such.
- \topquote evaded a TeX implementation bug that caused leading Ls
in the second (attribution) argument to be eaten.
- Ability cards regained the inner frame around the "effect" text (which
apparently had dropped out at some point without anybody noticing).
- printing-packets.html
has dropped the erroneous "-i=w" form of --ingame, -i usage;
also, the packets script error for invalid usages now summarizes
the valid ones.
- The "packets" script advanced an error check to avoid a Perl warning
when packets.config specifies nonexistent printers.
- The "packets" script's printer-status checking was changed to reflect
changes in printer behavior (from firmware upgrade, not lprng).
It now uses lpq-based information only and always gets a
judgement call from the user on printer conditions.
- The warranty was added.
1.5d CZAR
- Fixed \frobbies (see top of
Charsheets/template.tex)
to correctly propagate argument-taking macro defns from charsheets
to tex-type extractables.
- Added "inlineheaders" option to sheets.sty, and used it by default in
LaTeX/Central/rules.tex.
See list-extractable.html about
using it in bluesheets and so on.
- Single-sided cards now default to tight packing (i.e. no margins)
since front/back alignment of the printed page isn't an issue for them.
(Double- and mirror-sided still have nonzero default margins.)
See cards.html and
cards.sty comments.
1.5d HACKER
- Dropped bin/gm's GM::dvips -P usage as being incompatible with -R
(see under USER above), redundant with having GM::lpr, and not used
by any Template scripts.
- The postscript graying in badges.sty is more like that done in color.sty
(but doesn't use that, to avoid unnecessary level-two postscript).
- Had extractable.sty defer \pagestyle invocation so as to have it
see the right (final) \textwidth.
- Fixed card.sty's dimension calculations to allow for the borders
correctly, and made the built-up boxing structures cleaner and
more robust (constant nesting level).
Remember to check out the external
documentation on recently discovered issues.