required funct