Refactor: responsibilities.
Refactor: naming
Refactor: duplication
Added notes