Moving XP() to XP0 and maybe I should allow re-computation of intersections at each Update... TODO