The current structure for models, instances, and apis offer a way to access and manipulate CiviHR's data while separating each responsibility into clear distinctive units.
Unfortunately, current implementations have a lack of cohesion, different services implement the same methods with slight variations, lack of inheritance, spec files repeat the same tests, and instance services are created without a purpose, just to follow the convention.
This document will address these issues and propose solutions for them.