It provides heterogeneous container classes
It provides dynamic type determination in the form of "safe casts"
It provides accessors to access OATH objects.
For each OATH type there is a corresponding accessor class (an accessor lies between a C++ pointer and a C++ reference). The accessors can be initialized and assigned OATH objects to access. However, any other operation on an accessor is applied directly to the abstract object it accesses.