always use frame_new/old pointers