more work on WhileExpr + clean ups