updated valid function