in a single class ❖ Avoid entangling objects that should be kept separate ❖ Define flexible interfaces among objects ❖ Reduce programming overhead costs with duck typing ❖ Successfully apply inheritance ❖ Build objects via composition ❖ Design cost-effective tests ❖ Craft simple, straightforward, understandable code