       icon      : yes
       iconOnly  : yes
       iconClass : "plus"
-      callback  : =>
-        @getListView().showModal this
+      callback  : => @showModal()
+
+  showModal: ->
+    paymentController = KD.getSingleton 'paymentController'
+    modal = paymentController.createBillingInfoModal 'user', {}
+    paymentController.fetchBillingInfo 'user', (err, initialBillingInfo) ->
+
+      modal.setBillingInfo initialBillingInfo.billing  if initialBillingInfo?
+
+      modal.on 'PaymentInfoSubmitted', (updatedBillingInfo) ->
+        paymentController.updateBillingInfo updatedBillingInfo
+
 
 class AccountPaymentMethodsList extends KDListView
   constructor:(options,data)->

      @loadItems()

    list = @getListView()
    list.on 'reload', (data)=>
      @loadItems()

  loadItems: ->
    @removeAllItems()
    @showLazyLoader no
    KD.remote.api.JPaymentPlan.fetchAccountDetails (err, res) =>
      accounts = []
      if err
        @instantiateListItems []
        @hideLazyLoader()
      unless err
        if res.billing
          { cardFirstName, cardLastName, cardNumber, cardType, cardMonth,
            cardYear, address1, address2, city, state, zip } = res.billing

          accounts.push
            title        : "#{cardFirstName} #{cardLastName}"
            type         : cardType
            cardNumber   : cardNumber
            cardExpiry   : [ cardMonth, cardYear ].join '/'
            cardAddress  : [ address1, address2 ].filter(Boolean).join ' '
            cardCity     : city
            cardState    : state
            cardZip      : zip
        @instantiateListItems accounts
        @hideLazyLoader()

  loadView:->
    super

    ,options
    super options,data

class AccountPaymentMethodsListItem extends KDListItemView
  constructor:(options, data)->
    options.tagName = "li"
    options.cssClass = 'credit-card-list-item'
    super options,data

    data = @getData()

    @billingMethod = new BillingMethodView {}, @getData().billing

    @editLink = new CustomLinkView
      title: 'edit'
      click: => @emit 'PaymentMethodEditRequested', data

    @removeLink = new CustomLinkView
      title: 'remove'
      click: => @emit 'PaymentMethodRemoveRequested', data

  viewAppended: JView::viewAppended

  pistachio:->
    """
    {{> @billingMethod}}
    <div class="controls">{{> @editLink}} | {{> @removeLink }}</div>
    """