diff --git a/RingD.cpp b/RingD.cpp
index 0e96a91445e670529a17cb9c793e1826db9d19df..a372c1af935b8f7a2ba1fe0694c9afb21ab8e9d8 100644
--- a/RingD.cpp
+++ b/RingD.cpp
@@ -354,6 +354,13 @@ void RingClientUWP::RingD::deleteAccount(String ^ accountId)
     tasksList_.push(task);
 }
 
+void RingClientUWP::RingD::registerThisDevice(String ^ pin, String ^ archivePassword)
+{
+    tasksList_.push(ref new RingD::Task(Request::RegisterDevice, pin, archivePassword));
+    archivePassword = "";
+    pin = "";
+}
+
 void
 RingClientUWP::RingD::startDaemon()
 {
@@ -649,13 +656,8 @@ RingClientUWP::RingD::startDaemon()
         else {
             switch (_startingStatus) {
             case StartingStatus::REGISTERING_ON_THIS_PC:
-            {
-                tasksList_.push(ref new RingD::Task(Request::AddRingAccount));
-                break;
-            }
             case StartingStatus::REGISTERING_THIS_DEVICE:
             {
-                tasksList_.push(ref new RingD::Task(Request::RegisterDevice, _pin, _password));
                 break;
             }
             case StartingStatus::NORMAL:
@@ -771,8 +773,8 @@ RingD::dequeueTasks()
         break;
         case Request::RegisterDevice:
         {
-            auto pin = Utils::toString(_pin);
-            auto password = Utils::toString(_password);
+            auto pin = Utils::toString(task->_pin);
+            auto password = Utils::toString(task->_password);
 
             std::map<std::string, std::string> deviceDetails;
             deviceDetails.insert(std::make_pair(DRing::Account::ConfProperties::TYPE, "RING"));
diff --git a/RingD.h b/RingD.h
index 89c66acf4c46c3b5386b6122d9b1de39018a7ff9..b61d1339abb04579f4c25c38bcb8c24170d70c2b 100644
--- a/RingD.h
+++ b/RingD.h
@@ -61,8 +61,6 @@ public:
         }
     }
     property StartingStatus _startingStatus;
-    property String^ _pin; // you should RM ME
-    property String^ _password; // refatco : think a little... RM ME
 
     void cancelOutGoingCall2(String^ callId); // marche
 
@@ -100,10 +98,9 @@ internal:
     void eraseCacheFolder();
     void updateAccount(String^ accountId);
     void deleteAccount(String^ accountId);
+    void registerThisDevice(String^ pin, String^ archivePassword);
 
     /* TODO : move members */
-    ///bool hasConfig; // replaced by startingStatus
-    std::string accountName; // YOU SHOULD RM ME
     String ^ currentCallId; // to save ongoing call id during visibility change
 
     /* events */
diff --git a/Wizard.xaml b/Wizard.xaml
index aad544c25e2fe7dc190c6c91c25c44115f9eb7f9..d5a2ee1ba62863fab27d5c564f4ceaa18b2c47ed 100644
--- a/Wizard.xaml
+++ b/Wizard.xaml
@@ -54,9 +54,13 @@
                             <TextBox x:Name="_aliasTextBox_"
                                      Margin="10"
                                      PlaceholderText="Enter your username"/>
-                            <PasswordBox Margin="10"
+                            <PasswordBox x:Name="_password_"
+                                         Margin="10"
+                                         PasswordChanged="validatePassword"
                                          PlaceholderText="Enter your password"/>
-                            <PasswordBox  Margin="10,10,10,20"
+                            <PasswordBox  x:Name="_passwordCheck_"
+                                          Margin="10,10,10,20"
+                                          PasswordChanged="validatePassword"
                                           PlaceholderText="Repeat your Password"/>
                         </StackPanel>
                         <!-- SIP account. -->
@@ -81,6 +85,7 @@
                                     VerticalAlignment="Center"
                                     HorizontalAlignment="Center"
                                     Content="&#xE081;"
+                                    IsEnabled="False"
                                     Click="_createAccountYes__Click"
                                     Style="{StaticResource ButtonStyle2}"/>
                         </StackPanel>
diff --git a/Wizard.xaml.cpp b/Wizard.xaml.cpp
index a643a783965372c6d5030cc90e5d9c84e0a8b27c..72fc746cd39cf8d8dc7ea5d87807b2924f47151c 100644
--- a/Wizard.xaml.cpp
+++ b/Wizard.xaml.cpp
@@ -32,14 +32,12 @@ void
 Wizard::_createAccountYes__Click(Object^ sender, RoutedEventArgs^ e)
 {
     auto alias = _aliasTextBox_->Text;
-    if (alias->IsEmpty())
-        alias = "windows user";
-    std::wstring wstr(alias->Begin());
-    std::string str(wstr.begin(), wstr.end());
     RingD::instance->_startingStatus = StartingStatus::REGISTERING_ON_THIS_PC;
-    RingD::instance->accountName = std::string(wstr.begin(), wstr.end());
+
     this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([this] () {
         this->Frame->Navigate(Windows::UI::Xaml::Interop::TypeName(RingClientUWP::MainPage::typeid));
+        RingD::instance->createRINGAccount(_aliasTextBox_->Text, _password_->Password, true);
+        _password_->Password = "";
     }));
 }
 
@@ -118,11 +116,21 @@ Wizard::_avatarWebcamCaptureBtn__Click(Platform::Object^ sender, Windows::UI::Xa
 
 void RingClientUWP::Views::Wizard::_addAccountYes__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
 {
-    RingD::instance->_pin = _PINTextBox_->Text;
-    RingD::instance->_password = _ArchivePassword_->Password;
     RingD::instance->_startingStatus = StartingStatus::REGISTERING_THIS_DEVICE;
 
     this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this]() {
         this->Frame->Navigate(Windows::UI::Xaml::Interop::TypeName(RingClientUWP::MainPage::typeid));
+        RingD::instance->registerThisDevice(_PINTextBox_->Text, _ArchivePassword_->Password);
+        _ArchivePassword_->Password = "";
+        _PINTextBox_->Text = "";
     }));
 }
+
+
+void RingClientUWP::Views::Wizard::validatePassword(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
+{
+    _createAccountYes_->IsEnabled = (_password_->Password
+                                     == _passwordCheck_->Password
+                                     && _password_->Password->Length() > 0)
+                                    ? true : false;
+}
diff --git a/Wizard.xaml.h b/Wizard.xaml.h
index 28cbcd67ece4db184feef3d0d1d3cd997ed72105..3dc6a88f86c0a2d06deba47b67b150413686f1ea 100644
--- a/Wizard.xaml.h
+++ b/Wizard.xaml.h
@@ -17,6 +17,7 @@ private:
     void _showAddAccountMenuBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
     void _avatarWebcamCaptureBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
     void _addAccountYes__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
+    void validatePassword(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
 };
 
 }