Always remember to follow your code VERY CLOSELY or garbage like this happens. finalize_traitor calls traitor_kind.finalize_traitor(); that's how I intended it to happen. Instead, I foolishly wrote "traitor_kind.finalize_traitor()" in the on_gain() proc. I didn't notice for a LONG time, because... well, it's supposed to call finalize_traitor(), just not that one. The pitfalls of working with old code.