* Why OOP?
 - NAMES!       
 - (sometimes) classes/objects accurately model
    our problems (inheritance). Object.
 - extensibility: code reuse
 - abstraction: encapsulation (privacy/hiding)
 - Separate interface from implementation
 - organizational
 - polymorphism
 - state/namespace
 - fluency
 - documentation

