The coordinate system classes are designed to support arbitrarily complex coordinate systems as well as to allow easy conversion between systems. The actual job of transforming between systems is done by one or more CoordTransform objects, each handling a specialized transformation. To engage a CoordTransform object, one can ``attach'' it to a CoordinateSystem object. By attaching multiple CoordTransform objects, one effectively can ``daisy-chain'' them together to produce more complicated transformations. They can be attached during the CoordinateSystem object's construction or anytime after, say, by request of the user. CoordTransform objects can also be used independent of any CoordinateSystem.