# this line specifies the backend class, but
# we don't need to know that, to us, its just
# a parameter
my $x = Thing->new( backend => 'A' );
# here we are accessing the backend object
# and calling do on it.
# This to me is the interface for creating the
# backend object (the "backend" method).
$x->backend->do();
####
$x->backend->new()->do();
####
$x->do_backend();
####
+-------------+ +------------+
| Composition |<>---------------------->| Compositor |
+-------------+ +------------+
| Traverse() | | Compose() |
| Repair() | +------------+
+------^------+ |
| +---------------+-----+
| | |
_________|________________ +------------------+ +---------------+
| compositor->Compose() \| | SimpleCompositor | | TeXCompositor |
+-------------------------+ +------------------+ +---------------+
| Compose() | | Compose() |
+------------------+ +---------------+