https://towardsdev.com/solid-principles-in-javascript-for-writing-clean-code-the-open-closed-principle-2516ca7f7337