https://medium.com/@tanialapalelo/understanding-javascript-primitives-and-reference-types-9916ffa6c8b5