Our goal is to design a container for digits. Here we discuss the public interface of that container.
Possible levels of granularity for the subcontainers include layers, multilayers, modules (chambers), projective towers, radial layers, readout drivers (ROD's), readout crates (ROC's) and technology.
There are also two modes of access: keyed and iterative. In the former the container returns the digit or subcontainer of digits associated with a specified identifier. In the latter, the container returns an iterator which can be used to traverse all elements.
The above interface is chosen because it most closely matches the expected usage (our first two use cases).
Other interfaces such as iterative access over all modules or digits in a technology can be added later if desired. For now we limit ourselves to the above minimal interface to keep the containers simple.