           if err
             notify "An error occured"
             return queue.next()
-          else
-            currentPasswordConfirmed = true unless user.passwordStatus is "valid"
-            confirmCurrentPassword currentPasswordConfirmed, =>
-              JUser.changePassword password, (err,docs)=>
-                @emailForm.inputs.password.setValue ""
-                @emailForm.inputs.confirm.setValue ""
-                if err
-                  return queue.next()  if err.message is "PasswordIsSame"
-                  return  notify err.message
-                return queue.next()
+
+          passwordConfirmed = true unless user.passwordStatus is "valid"
+          confirmCurrentPassword {passwordConfirmed}, (err) =>
+            if err
+              notify err
+              profileUpdated = false
+              return queue.next()
+            JUser.changePassword password, (err,docs)=>
+              @emailForm.inputs.password.setValue ""
+              @emailForm.inputs.confirm.setValue ""
+              if err
+                return queue.next()  if err.message is "PasswordIsSame"
+                return notify err.message
+              return queue.next()
       =>
         # if everything is OK or didnt change, show profile updated modal
         notify "Your account information is updated." if profileUpdated

          # but do not forget to warn users about other errors
          if err
            return queue.next() if err.message is "EmailIsSameError"
            return notify err.message

          confirmCurrentPassword currentPasswordConfirmed, =>
            currentPasswordConfirmed = true
            new VerifyPINModal 'Update E-Mail', (pin)=>
              KD.remote.api.JUser.changeEmail {email, pin}, (err)=>
                if err

    {email, password, confirmPassword, firstName, lastName, username} = formData

    profileUpdated = yes
    passwordConfirmed = no
    queue = [
      =>
        # update firstname and lastname
