setup and depends funcion