https://medium.com/@maxheadway/what-context-means-in-javascript-and-its-principles-to-follow-13a02baea60