https://blog.repithwin.com/how-to-use-higher-order-functions-in-javascript/