https://medium.com/@michaelyoussef396/unlock-the-secrets-of-javascript-mastering-closures-for-next-level-code-d9372847b42a