all the needed stuff