while, gc improved