A volume implements the storage scheme for volumetric data, such as a linear volume layout or a bricked volume layout. The implementation uses the concept of volume iterators. An iterator provides access to the volume data hiding the internal data representation. Thus, when the internal data representation changes the remaining modules are not affected. There are general-purpose iterators for volume traversal in predefined orders, random-access iterators, and specialized iterators. Specialized iterators include iterators for casting a single ray (used for picking) and an iterator which implements Law and Yagel's volume traversal scheme [22].