https://www.togidev.com/how-to-do-closures-in-javascript/