rename _delete() to _free()