https://ideas.creativecasinoties.com/post/closures-in-javascript-a-beginner-friendly-guide-7nvfu1