https://towardsdev.com/solid-principles-in-javascript-for-writing-clean-code-the-interface-segregation-principle-4db55252a9a3