diff --git a/images/spinner.gif b/images/spinner.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b97e8d9c8660ab1f83eefd0cb7317fb876034e1b
Binary files /dev/null and b/images/spinner.gif differ
diff --git a/ressources.qrc b/ressources.qrc
index 66f70a7ee0d212b251d9a801a33c6a8327d2538d..1b6660e1c05180b1b16f71bb6beb07415a72cef4 100644
--- a/ressources.qrc
+++ b/ressources.qrc
@@ -21,5 +21,6 @@
         <file>images/sort-variant.png</file>
         <file>images/arrow-down.png</file>
         <file>images/arrow-up.png</file>
+        <file>images/spinner.gif</file>
     </qresource>
 </RCC>
diff --git a/wizarddialog.cpp b/wizarddialog.cpp
index ae21ae3ae5b67a2e9bc7b58f11b36e2acca72696..b281d0cc175b85a8eccf473dbaf6159a6cb7c773 100644
--- a/wizarddialog.cpp
+++ b/wizarddialog.cpp
@@ -19,7 +19,10 @@
 #include "wizarddialog.h"
 #include "ui_wizarddialog.h"
 
+#include <QMovie>
+
 #include "accountmodel.h"
+#include "account.h"
 
 #include "utils.h"
 
@@ -33,6 +36,14 @@ WizardDialog::WizardDialog(QWidget *parent) :
     this->setWindowFlags(Qt::FramelessWindowHint);
     this->setFixedSize(this->width(),this->height());
     ui->buttonBox->setEnabled(false);
+
+    ui->spinnerLabel->hide();
+    QMovie* movie = new QMovie(":images/spinner.gif");
+    if (movie->isValid())
+    {
+        ui->spinnerLabel->setMovie(movie);
+        movie->start();
+    }
 }
 
 WizardDialog::~WizardDialog()
@@ -43,32 +54,34 @@ WizardDialog::~WizardDialog()
 void
 WizardDialog::accept()
 {
-    ui->label->setText("Working...");
+    //ui->spinnerLabel->show();
+    ui->label->setText("Please wait while we create your account.");
     ui->buttonBox->setEnabled(false);
     ui->usernameEdit->setEnabled(false);
 
-   QtConcurrent::run(this, &WizardDialog::setup).waitForFinished();
-}
+    repaint();
 
-void
-WizardDialog::endSetup()
-{
-    QDialog::accept();
-}
+    Utils::CreateStartupLink();
 
-void
-WizardDialog::setup()
-{
     auto account = AccountModel::instance()->add(ui->usernameEdit->text(), Account::Protocol::RING);
     AccountModel::instance()->ip2ip()->setRingtonePath(Utils::GetRingtonePath());
     account->setRingtonePath(Utils::GetRingtonePath());
-    AccountModel::instance()->save();
-    Utils::CreateStartupLink();
-    endSetup();
+    account->setUpnpEnabled(true);
+
+    connect(account, SIGNAL(changed(Account*)), this, SLOT(endSetup(Account*)));
+
+    account->performAction(Account::EditAction::SAVE);
+}
+
+void
+WizardDialog::endSetup(Account* a)
+{
+    Q_UNUSED(a)
+    QDialog::accept();
 }
 
 void
 WizardDialog::on_usernameEdit_textChanged(const QString &arg1)
 {
-     ui->buttonBox->setEnabled(!arg1.isEmpty());
+    ui->buttonBox->setEnabled(!arg1.isEmpty());
 }
diff --git a/wizarddialog.h b/wizarddialog.h
index 1a03e27a980d16e02119c6094252b08c0334b129..b3445e6c3f981d812dbbdfdf296540e0ed6954b6 100644
--- a/wizarddialog.h
+++ b/wizarddialog.h
@@ -22,6 +22,8 @@
 #include <QDialog>
 #include <QtConcurrent/QtConcurrent>
 
+#include "account.h"
+
 namespace Ui {
 class WizardDialog;
 }
@@ -38,13 +40,14 @@ private slots:
     void on_usernameEdit_textChanged(const QString &arg1);
     void accept();
 
-    void endSetup();
-
 private:
     Ui::WizardDialog *ui;
 
 private:
     void setup();
+
+private slots:
+    void endSetup(Account* a);
 };
 
 #endif // WIZARDDIALOG_H
diff --git a/wizarddialog.ui b/wizarddialog.ui
index 0ed6d260dce4afa9920eb36954abe693926aa19d..a0d9c5ed3c9e1bb186fbc6bfbd2a91fa2098caa8 100644
--- a/wizarddialog.ui
+++ b/wizarddialog.ui
@@ -435,7 +435,17 @@
       <string/>
      </property>
      <property name="pixmap">
-      <pixmap>:/images/logo-ring-standard-coul.png</pixmap>
+      <pixmap resource="ressources.qrc">:/images/logo-ring-standard-coul.png</pixmap>
+     </property>
+     <property name="scaledContents">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item alignment="Qt::AlignHCenter">
+    <widget class="QLabel" name="spinnerLabel">
+     <property name="text">
+      <string/>
      </property>
      <property name="scaledContents">
       <bool>true</bool>
@@ -471,7 +481,9 @@
    </item>
   </layout>
  </widget>
- <resources/>
+ <resources>
+  <include location="ressources.qrc"/>
+ </resources>
  <connections>
   <connection>
    <sender>buttonBox</sender>