     )
 
   updateAddresses: ->
-    @store.adapterFor(@constructor.typeKey).updateAddresses(@).then ( (success) =>
-      @reload()
-    ), (errors) =>
-      console.log(errors)
-      @adapterDidInvalidate(errors)
+    @store.adapterFor(@constructor).updateAddresses(@)
 
   updatePayment: ->
-    @store.adapterFor(@constructor.typeKey).updatePayment(@).then ( (success) =>
-      @reload()
-    ), (errors) =>
-      console.log(errors)
-      @adapterDidInvalidate(errors)
+    @store.adapterFor(@constructor).updatePayment(@)
 
   next: ->
-    @store.adapterFor(@constructor.typeKey).next(@).then ( (success) =>
-      @reload()
-    ), (errors) =>
-      console.log(errors)
-      @adapterDidInvalidate(errors)
+    @store.adapterFor(@constructor).next(@)
+
+  confirm: ->
+    @store.adapterFor(@constructor).confirm(@)
 
   selectShippingRate: ->
-    @store.adapterFor(@constructor.typeKey).selectShippingRate(@).then ( (success) =>
-      @reload()
-    ), (errors) =>
-      console.log(errors)
-      @adapterDidInvalidate(errors)
+    @store.adapterFor(@constructor).selectShippingRate(@)
+
+  goToState: (state) ->
+    @store.adapterFor(@constructor).goToState(@, state)


SpreeCheckout.Order = DS.Model.extend
  coupon_code: null
  use_billing: false
  payment_method_id: null

  number: DS.attr('string')

  payment_source: DS.belongsTo('payment-source')
  bill_address: DS.belongsTo('bill-address')
  line_items: DS.hasMany('line-item')
  shipments: DS.hasMany('shipment')
  payments: DS.hasMany('payment')
  payment_methods: DS.hasMany('payment-method')
  adjustments: DS.hasMany('adjustment')

