https://devdotpy.medium.com/higher-order-functions-in-javascript-and-why-you-should-use-them-more-7c2b9e7e583e