remember "managing dependencies" and "single responsibility"? apply it