avoid calling remove
add reserve to empty