Update _purify. GC optimization

furthermore, as it's a recursive f()