Packages are program units
that allow the specification of groups of logically related entities.
Typically, a package contains the declaration of a type (often a private
type or private extension) along with the declarations of primitive subprograms
of the type, which can be called from outside the package, while their
inner workings remain hidden from outside users.