Every piece of Java code starts with a class. Maybe that class will use another class or subclass. Maybe that class is part of a package that is part of a component. Maybe the class is not even a class, but an interface. Regardless, once multiple classes, components , and interfaces are mixed together, the end result can be great or awful , much like bread that has either too much yeast or not enough. The trick is to learn how to know how much yeast to add so that you make the perfect bread or, in the case of this book, the perfect class, component, or interface. The task that is described in this chapter is how to organize your classes so that the resulting architecture is versatile.