since you return a planstate anyway, we could get rid of the mutable stuff by passing a plan state in, and then they construct a new one with the new plan.