Add whereHas() for filtering results by relationships. Break down into SOLID classes