make use of reverse instead of depends on remove()