That is what I'm doing. Sorry I didn't include more code; it's a very complex app with many code paths and a lot of symbolic references. All the internal buttons are packForgotten, then $bpanelframe is packForgotten, then the (new) buttons are packed and $bpanelframe is re-packed.
Thanks for the confirmation that I need to try going all the way out in order to get consistent behaviour.