Mhm, pretty much that. It's not the most efficient way to do it (memory-wise), but it's possible to mitigate it, and more importantly it makes the whole thing a bit more fool-proof in its working, because there are only two buffs (the control/pointer ones and the temporary ones) and thus if you keep your code clean it's really hard to do something stupid. Of course, depending on what the thing in question is supposed to do exactly, it might be possible to do it without the temporary stack (in these cases when you want to remove the control stack when things happen). But, as usually, it's safer to just have it and not have any use out of it rather than not have it and then need it. And it's nice to see that, contrary to my earlier fear, you appear to know a bit about it (or maybe even a byte).