stack is transient - only used by recursor