           # but do not forget to warn users about other errors
           if err
             return queue.next() if err.message is "EmailIsSameError"
+            @emailForm.buttons.Save.hideLoader()
             return notify err.message
 
-          confirmCurrentPassword currentPasswordConfirmed, =>
-            currentPasswordConfirmed = true
+          options = {passwordConfirmed, email}
+          confirmCurrentPassword options, (err) =>
+            if err
+              notify err
+              profileUpdated = false
+              return queue.next()
+            passwordConfirmed = true
             new VerifyPINModal 'Update E-Mail', (pin)=>
               KD.remote.api.JUser.changeEmail {email, pin}, (err)=>
                 if err

          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()
      =>
        # if everything is OK or didnt change, show profile updated modal
        notify "Your account information is updated." if profileUpdated

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

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