wait wait wait, and how/who sets "is_valid_"  to WGT package? Can we unify the behavior for both WGT and XPK packages instead?
Package class should not be aware of its implementations, I believe this enum should not be here. Also no "if (xpk) " or "if (wgt)" in Package class