Separated classes to enforce Single Responsibility Principle