rebuild cart: this works better still not perfect. don't call it yet