checkout flow system design