purging makes only sense with recurse