Can now enumerate output modes

Must be very cautious around resources! Auto-generated copy constructors
and such will wreak havoc. Must implement copy and/or move constructors
in terms of swap to ensure copied resources are not destroyed early.