https://medium.com/@stevenpcurtis.sc/whats-the-difference-in-creating-an-object-with-and-init-5fedd0ea83ad