https://medium.com/@codeofrelevancy/you-need-to-know-about-pure-functions-impure-functions-in-javascript-19c3008ea8c5