A well structured app consists of simple objects with well-defined responsibilities talking to each other. When you design an object, you might think of an object's properties, and the actions they take, but it's just as important to decide how they'll communicate. Cocoa provides