       planCode : plan.code
     , (err, status)=>
       if not err and status
-        content = """<p>
-                       You already subscribed for an additional 
-                       <strong>#{type}</strong> VM.
-                     </p>
-                     <p>
-                       You <strong>won't</strong> be charged. Do you want to 
-                       continue?.
-                     </p>
-                  """
-        buildModal content, no, no, callback
+        @createPaymentConfirmationModal type, group, plan, no, 0, 0, callback
       else
         @getBillingInfo type, group, (err, account)=>
-          billing = err or not account or not account.cardNumber
+          needBilling = err or not account or not account.cardNumber
 
           @getBalance type, group, (err, balance)=>
-            if not err and balance > 0
-              charge = (plan.feeMonthly - balance) / 100
-              balance = balance / 100
-
-              content = """<p>
-                             You have $#{balance.toFixed(2)} credited to your 
-                             <strong>#{type}</strong> account.
-                           </p>
-                        """
-
-              if charge > 0
-                content += """<p>
-                                You will be charged for $#{charge.toFixed(2)}. 
-                                Do you want to continue?
-                              </p>
-                           """
-                @createPaymentConfirmationModal type, group, plan, content, billing, yes, callback
-              else
-                content += """<p>
-                                You <strong>won't</strong> be charged. Do you 
-                                want to continue?
-                              </p>
-                           """
-                @createPaymentConfirmationModal type, group, plan, content, no, no, callback
-            else
-              charge = plan.feeMonthly / 100
-              content = """<p>
-                             You will be charged for $#{charge.toFixed(2)}. Do 
-                             you want to continue?
-                           </p>
-                        """
-              @createPaymentConfirmationModal type, group, plan, content, billing, yes, callback
-
-  makePayment: (type, plan, willCharge, callback)->
+            if err
+              balance = 0
+            @createPaymentConfirmationModal type, group, plan, needBilling, balance, plan.feeMonthly, callback
+
+  makePayment: (type, plan, amount, callback)->
     vmController = KD.getSingleton('vmController')
     group        = KD.getSingleton("groupsController").getCurrentGroup()
 
-    unless willCharge
+    if amount is 0
       vmController.createGroupVM type, plan.code
     else
       if type is 'group'

          cssClass  : "modal-clean-green hidden"
          callback  : =>
            modal.destroy()
            @makePayment type, plan, willCharge, ->
              cb()

    if needBilling
      modal.buttons.Billing.show()
    else
      modal.buttons.Yes.show()

  confirmPayment:(type, plan, callback=->)->
    group = KD.getSingleton("groupsController").getCurrentGroup()

    else
      KD.remote.api.JRecurlyPlan.getUserAccount cb

  createPaymentConfirmationModal: (type, group, plan, needBilling, balance, amount, cb)->
    content = @paymentWarning balance, amount

    modal           = new KDModalView
      title         : "Confirm VM Creation"
      content       : "<div class='modalformline'>#{content}</div>"
