semicolon is unnecessary in `while`