A CONTAINER is designed to contain many widgets (called children).
Children are arranged in the container using some LAYOUT, and painted.
The CONTAINER may be seen as a shell: if the container is not
shrinkable, it will not shrink any of it's children. If the
container is shrinkable, it may shrink children that are shrinkable
but never shrink not shrinkable children (it's like a shell again).
The LAYOUT is an algorithm attached to the container. It has to
decide size and position for children.