https://medium.com/@likhitkumarvp/things-you-need-to-know-about-javascript-callback-functions-6096a02596c3