https://medium.com/@rahulkannom21/immediately-invoked-function-iife-vs-regular-function-in-javascript-ffc3edd6d343