rework callbacks so they dont cause stale page exceptions. fixes #17