In so many ways, we developed computers and are only slowly learning to organize their power.
For example, we have variables in our FrameMaker documents. These can be set to pop out a value whenever they’re inserted, so if the version of software we’re writing about changes, we can have the right file name or version number in the text.
But what if we were to re-organize, and use hierarchical variables?

These would replace the variable with a condition, and that condition would activate any of the variables under it to have multiple values.
For a condition, defined as version 2.0 or 3.1 or 4.7, a set of variables — like book name, version number, product name, file extension, directory location, copyright — would all change in synchronization.
This is one of those features that should be standard in any application designed for professional use and, quite frankly, don’t most people want to buy those anyway even if they don’t use the extra capacity? In software terms, extra power is slightly longer load times and extra bytes on the disk — no big deal.