The separation of tasks into the domains of different components should be
guided by the concepts of coupling and cohesion.
Cohesion is the degree to which the tasks assigned to a component seem to
form a meaningful unit. Want to maximize cohesion.
Coupling is the degree to which the ability to fulfill a certain
responsibility depends upon the actions of another component. Want to
minimize coupling.