       .on 'DataCollected', (data) =>
         @transitionSubscription data, (err, subscription, rest...) ->
           return  if KD.showError err
-          workflow.emit 'Finished', data, subscription, rest...
+          workflow.emit 'Finished', data, err, subscription, rest...
+
+      .on 'Finished', (data, err, subscription, rest...) =>
+        { plan, email, createAccount, paymentMethod: {billing} } = data
+        if err?.short is 'existing_subscription'
+          { existingSubscription } = err
+          if existingSubscription.status is 'active'
+            new KDNotificationView title: "You are already subscribed to this plan!"
+            KD.getSingleton('router').handleRoute '/Account/Subscriptions'
+          else
+            existingSubscription.plan = plan
+            @confirmReactivation existingSubscription, (err, subscription) =>
+              return KD.showError err  if err
+              @emit "SubscriptionReactivated", subscription
+        else if createAccount
+          { cardFirstName: firstName, cardLastName: lastName } = billing
+          { JUser } = KD.remote.api
+          JUser.convert { firstName, lastName, email }, (err) ->
+            JUser.logout()
+
       .enter()
 
     workflow

          callback null, subscription

  createSubscription: (options, callback) ->
    { plan, planOptions, promotionType, email, paymentMethod, createAccount } = options
    { paymentMethodId, billing } = paymentMethod
    { planApi } = planOptions

    throw new Error "Must provide a plan API!"  unless planApi?

      planCode: plan.planCode
    }

    planApi.subscribe options, callback

  transitionSubscription: (formData, callback) ->
    { productData, oldSubscription, promotionType, paymentMethod, createAccount, email } = formData
