illustrates some of the gof design patterns