Auto eject (use item_vars)

It touched a lot of lines, but essentially I just switched over to using item_vars instead of that union and then restyled the containing function.