4. Every class should have a single responsibility,
and that responsibility should be entirely
encapsulated by the class. All its services
should be narrowly aligned with that
responsibility.
A responsibility is a reason to change, and a
class or module should have one, and only
one, reason to change.