https://software-testing-tips.medium.com/top-10-api-design-patterns-for-effective-solutions-ef0b752e3991