add while && switch