why do you need this function (you immediately invoke it)