The MoleculeData class is not publicly accessible from the API. Instead, it is held via copy-on-write implicitly shared pointers by viewer and editor classes. For example, the Atom and AtomEditor classes provide a view and an editor for information relating to a single atom in the molecule. Similarly, the Residue and ResEditor classes provide a view and editor for residue-level information. A higher level of classes that implement a "Selector" interface implement collections (containers) of views. These are named using Selector... for views within a molecule, and SelectorM... for views across multiple molecules. For example, atoms within a molecule are held in SelectorAtom, bonds in a molecule are held in SelectorBond, while residues across lots of molecules are held in SelectorMResidue, while selections of whole molecules are held in SelectorMol.