extern c cleanup done, field callbacks & updatebuttons are the only things needing the extern