https://mysteryweevil.medium.com/mastering-arrow-functions-and-memoization-in-javascript-abf57526090c