https://medium.com/@beyond_verse/mastering-javascript-essential-concepts-for-web-developers-c79ae9efefb8