diff --git a/Account.cpp b/Account.cpp
index 747d7e1bc538cba81c595ddd7e38d02deda9a73b..902f6d6e990ffcaf96937b1d97d7b1bfec6d83c5 100644
--- a/Account.cpp
+++ b/Account.cpp
@@ -32,7 +32,10 @@ Account::Account(String^ name,
                  String^ accountType,
                  String^ accountID,
                  String^ deviceId,
-                 bool upnpState)
+                 bool upnpState,
+                 String^ sipHostname,
+                 String^ sipUsername,
+                 String^ sipPassword)
 {
     name_ = name;
     ringID_ = ringID;
@@ -40,6 +43,10 @@ Account::Account(String^ name,
     accountID_ = accountID;
     _deviceId = deviceId;
     _upnpState = _upnpState;
+    _sipHostname = sipHostname;
+    _sipUsername = sipUsername;
+    _sipPassword = sipPassword;
+
 }
 
 void
diff --git a/Account.h b/Account.h
index 565cfbe372ec7b47d71a9b958432e3190463efc0..50a5cba931c1aeb743a52e83a7d2f0cb4b5c827f 100644
--- a/Account.h
+++ b/Account.h
@@ -28,17 +28,18 @@ namespace RingClientUWP
 public ref class Account sealed : public INotifyPropertyChanged
 {
 public:
-    Account(String^ name, String^ ringID, String^ accountType, String^ accountID, String^ deviceId, bool upnpState);
+    Account(String^ name, String^ ringID, String^ accountType, String^ accountID, String^ deviceId, bool upnpState
+            , String^ sipHostname, String^ sipUsername, String^ sipPassword);
 
     virtual event PropertyChangedEventHandler^ PropertyChanged;
 
     property String^ name_
     {
         String^ get() {
-            return name__;
+            return alias_;
         }
         void set(String^ value) {
-            name__ = value;
+            alias_ = value;
             NotifyPropertyChanged("name_");
         }
     }
@@ -63,14 +64,27 @@ public:
         }
     };
     property bool _upnpState;
+    property String^ _sipHostname;
+    property String^ _sipUsername
+    {
+        String^ get() {
+            return sipUsername_;
+        }
+        void set(String^ value) {
+            sipUsername_ = value;
+            NotifyPropertyChanged("_sipUsername");
+        }
+    }
+    property String^ _sipPassword; // refacto : think to encrypt password in memory
 
 protected:
     void NotifyPropertyChanged(String^ propertyName);
 
 private:
     Windows::Foundation::Collections::IVector<String^>^ devicesIdList_;
-    String^ name__;
+    String^ alias_;
     String^ ringID__;
+    String^ sipUsername_;
 
 };
 }
diff --git a/AccountsViewModel.cpp b/AccountsViewModel.cpp
index 227a1af8f1d35b572b9d87729e1814eea34b2ccd..49392c70305ea9eaaa687662b77a1079fb6d0529 100644
--- a/AccountsViewModel.cpp
+++ b/AccountsViewModel.cpp
@@ -29,15 +29,38 @@ AccountsViewModel::AccountsViewModel()
 }
 
 void
-AccountsViewModel::add(std::string& name, std::string& ringID, std::string& accountType, std::string& accountID, std::string& deviceId, bool upnpState)
+AccountsViewModel::addRingAccount(std::string& alias, std::string& ringID, std::string& accountID, std::string& deviceId, bool upnpState)
 {
     auto account = ref new Account(
-                       Utils::toPlatformString(name),
+                       Utils::toPlatformString(alias),
                        Utils::toPlatformString(ringID),
-                       Utils::toPlatformString(accountType),
+                       "RING",
                        Utils::toPlatformString(accountID),
                        Utils::toPlatformString(deviceId),
-                       upnpState);
+                       upnpState,
+                       "" /* sip hostame not used woth ring account */,
+                       "" /* sip username not used with ring account */,
+                       "" /* sip password not used with ring */ );
+
+    accountsList_->Append(account);
+    updateScrollView();
+    accountAdded(account);
+}
+
+void
+AccountsViewModel::addSipAccount(std::string& alias, std::string& accountID, std::string& sipHostname, std::string& sipUsername, std::string& sipPassword)
+{
+    auto account = ref new Account(
+                       Utils::toPlatformString(alias),
+                       "" /* ring Id not used with sip */ ,
+                       "SIP",
+                       Utils::toPlatformString(accountID),
+                       "" /* device id not used with sip */,
+                       false /* upnpn not used with sip */,
+                       Utils::toPlatformString(sipHostname),
+                       Utils::toPlatformString(sipUsername),
+                       Utils::toPlatformString(sipPassword)
+                   );
 
     accountsList_->Append(account);
     updateScrollView();
diff --git a/AccountsViewModel.h b/AccountsViewModel.h
index 56f8490eda5b6afd3c61ef68bf4d3c0bc6aee976..b717c5ce4d2ee51a33842c916b7baf9848506188 100644
--- a/AccountsViewModel.h
+++ b/AccountsViewModel.h
@@ -46,7 +46,8 @@ internal:
     }
 
     /* functions */
-    void add(std::string& name, std::string& ringID, std::string& accountType, std::string& accountID, std::string& deviceId, bool upnpState);
+    void addRingAccount(std::string& alias, std::string& ringID, std::string& accountID, std::string& deviceId, bool upnpState);
+    void addSipAccount(std::string& alias, std::string& accountID, std::string& sipHostname, std::string& sipUsername, std::string& sipPassword);
     void clearAccountList();
     Account^ findItem(String^ accountId);
 
diff --git a/RingD.cpp b/RingD.cpp
index ea5bd28157e5ae27ca16c8aec597d7f43559663f..b3826506588b9d7f44bb9ee644cc7d4055359eae 100644
--- a/RingD.cpp
+++ b/RingD.cpp
@@ -59,38 +59,58 @@ RingClientUWP::RingD::reloadAccountList()
     std::vector<std::string>::reverse_iterator rit = accountList.rbegin();
 
     for (; rit != accountList.rend(); ++rit) {
-
         std::map<std::string,std::string> accountDetails = DRing::getAccountDetails(*rit);
-        std::string ringID(accountDetails.find(DRing::Account::ConfProperties::USERNAME)->second);
-
-        bool upnpState = (accountDetails.find(DRing::Account::ConfProperties::UPNP_ENABLED)->second == ring::TRUE_STR)
-                         ? true
-                         : false;
-
-        MSG_("upnp state : " + accountDetails.find(DRing::Account::ConfProperties::UPNP_ENABLED)->second);
 
-        if(!ringID.empty())
-            ringID = ringID.substr(5);
-
-        auto alias = accountDetails.find(DRing::Account::ConfProperties::ALIAS)->second;
         auto type = accountDetails.find(DRing::Account::ConfProperties::TYPE)->second;
-        auto deviceId = (type == "SIP")? std::string() : accountDetails.find(DRing::Account::ConfProperties::RING_DEVICE_ID)->second;
-        auto ringId = accountDetails.find(DRing::Account::ConfProperties::USERNAME)->second;
-
-        auto accountId = Utils::toPlatformString(*rit);
-        auto account = AccountsViewModel::instance->findItem(accountId);
-
-        if (account) {
-            account->name_ = Utils::toPlatformString(alias);
-            account->_upnpState = upnpState;
-            account->accountType_ = Utils::toPlatformString(type);
-            account->ringID_ = Utils::toPlatformString(ringId);
-            accountUpdated(account);
-        }
-        else {
-            RingClientUWP::ViewModel::AccountsViewModel::instance->add(alias, ringID, type, *rit /*account id*/, deviceId, upnpState);
+        if (type == "RING") {
+            auto  ringID = accountDetails.find(DRing::Account::ConfProperties::USERNAME)->second;
+            if (!ringID.empty())
+                ringID = ringID.substr(5);
+
+            bool upnpState = (accountDetails.find(DRing::Account::ConfProperties::UPNP_ENABLED)->second == ring::TRUE_STR)
+                             ? true
+                             : false;
+            auto alias = accountDetails.find(DRing::Account::ConfProperties::ALIAS)->second;
+            auto deviceId = accountDetails.find(DRing::Account::ConfProperties::RING_DEVICE_ID)->second;
+            auto accountId = *rit;
+
+            auto account = AccountsViewModel::instance->findItem(Utils::toPlatformString(accountId));
+
+            if (account) {
+                account->name_ = Utils::toPlatformString(alias);
+                account->_upnpState = upnpState;
+                account->accountType_ = Utils::toPlatformString(type);
+                account->ringID_ = Utils::toPlatformString(ringID);
+                accountUpdated(account);
+            }
+            else {
+                RingClientUWP::ViewModel::AccountsViewModel::instance->addRingAccount(alias, ringID, accountId, deviceId, upnpState);
+            }
         }
+        else { /* SIP */
+            auto alias = accountDetails.find(DRing::Account::ConfProperties::ALIAS)->second;
+            auto accountId = *rit;
+            auto sipHostname = accountDetails.find(DRing::Account::ConfProperties::HOSTNAME)->second;
+            auto sipUsername = accountDetails.find(DRing::Account::ConfProperties::USERNAME)->second;
+            auto sipPassword = accountDetails.find(DRing::Account::ConfProperties::PASSWORD)->second;
+
+            auto account = AccountsViewModel::instance->findItem(Utils::toPlatformString(accountId));
+
+            if (account) {
+                account->name_ = Utils::toPlatformString(alias);
+                account->accountType_ = Utils::toPlatformString(type);
+                account->_sipHostname = Utils::toPlatformString(sipHostname);
+                account->_sipUsername = Utils::toPlatformString(sipUsername);
+                account->_sipPassword = Utils::toPlatformString(sipPassword);
+                accountUpdated(account);
+            }
+            else {
+                RingClientUWP::ViewModel::AccountsViewModel::instance->addSipAccount(alias, accountId, sipHostname, sipUsername, sipPassword);
+            }
 
+            sipPassword = ""; // avoid to keep password in memory
+
+        }
     }
 
     // load user preferences
@@ -163,30 +183,38 @@ void RingClientUWP::RingD::sendSIPTextMessage(String^ message)
 }
 
 void
-RingD::createRINGAccount(String^ alias)
+RingD::createRINGAccount(String^ alias, String^ archivePassword, bool upnp)
 {
-
     editModeOn_ = true;
 
     auto frame = dynamic_cast<Frame^>(Window::Current->Content);
     dynamic_cast<RingClientUWP::MainPage^>(frame->Content)->showLoadingOverlay(true, true);
 
-    // refactoring : create a dedicated class constructor task and removes accountName from RingD
-    accountName = Utils::toString(alias);
-    tasksList_.push(ref new RingD::Task(Request::AddRingAccount));
+    auto task = ref new RingD::Task(Request::AddRingAccount);
+
+    task->_alias = alias;
+    task->_password = archivePassword;
+    task->_upnp = upnp;
+
+    tasksList_.push(task);
 }
 
 void
-RingD::createSIPAccount(String^ alias)
+RingD::createSIPAccount(String^ alias, String^ sipPassword, String^ sipHostname, String^ sipusername)
 {
     editModeOn_ = true;
 
     auto frame = dynamic_cast<Frame^>(Window::Current->Content);
     dynamic_cast<RingClientUWP::MainPage^>(frame->Content)->showLoadingOverlay(true, true);
 
-    // refactoring : create a dedicated class constructor task and removes accountName from RingD
-    accountName = Utils::toString(alias);
-    tasksList_.push(ref new RingD::Task(Request::AddSIPAccount));
+    auto task = ref new RingD::Task(Request::AddSIPAccount);
+
+    task->_alias = alias;
+    task->_sipPassword = sipPassword;
+    task->_sipHostname = sipHostname;
+    task->_sipUsername = sipusername;
+
+    tasksList_.push(task);
 }
 
 void RingClientUWP::RingD::refuseIncommingCall(String^ callId)
@@ -600,7 +628,6 @@ RingClientUWP::RingD::startDaemon()
             case StartingStatus::REGISTERING_ON_THIS_PC:
             {
                 tasksList_.push(ref new RingD::Task(Request::AddRingAccount));
-                tasksList_.push(ref new RingD::Task(Request::AddSIPAccount));
                 break;
             }
             case StartingStatus::REGISTERING_THIS_DEVICE:
@@ -663,17 +690,28 @@ RingD::dequeueTasks()
         case Request::AddRingAccount:
         {
             std::map<std::string, std::string> ringAccountDetails;
-            ringAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::ALIAS, accountName));
-            ringAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::ARCHIVE_PASSWORD, accountName));
+            ringAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::ALIAS
+                                      , Utils::toString(task->_alias)));
+            ringAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::ARCHIVE_PASSWORD,
+                                      Utils::toString(task->_password)));
             ringAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::TYPE,"RING"));
+            ringAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::UPNP_ENABLED
+                                      , (task->_upnp)? ring::TRUE_STR : ring::FALSE_STR));
             DRing::addAccount(ringAccountDetails);
         }
         break;
         case Request::AddSIPAccount:
         {
             std::map<std::string, std::string> sipAccountDetails;
-            sipAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::ALIAS, accountName + " (SIP)"));
+            sipAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::ALIAS
+                                                    , Utils::toString(task->_alias)));
             sipAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::TYPE,"SIP"));
+            sipAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::PASSWORD
+                                                    , Utils::toString(task->_sipPassword)));
+            sipAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::HOSTNAME
+                                                    , Utils::toString(task->_sipHostname)));
+            sipAccountDetails.insert(std::make_pair(DRing::Account::ConfProperties::USERNAME
+                                                    , Utils::toString(task->_sipUsername)));
             DRing::addAccount(sipAccountDetails);
         }
         break;
diff --git a/RingD.h b/RingD.h
index a304139f610ef5f5a00c38345cf6acf3041cd973..725e8730c5cf440719157ebdf87642b8d3b149e1 100644
--- a/RingD.h
+++ b/RingD.h
@@ -61,8 +61,8 @@ public:
         }
     }
     property StartingStatus _startingStatus;
-    property String^ _pin;
-    property String^ _password;
+    property String^ _pin; // you should RM ME
+    property String^ _password; // refatco : think a little... RM ME
 
     void cancelOutGoingCall2(String^ callId); // marche
 
@@ -82,8 +82,8 @@ internal:
     void reloadAccountList();
     void sendAccountTextMessage(String^ message);
     void sendSIPTextMessage(String^ message);
-    void createRINGAccount(String^ alias);
-    void createSIPAccount(String^ alias);
+    void createRINGAccount(String^ alias, String^ archivePassword, bool upnp);
+    void createSIPAccount(String^ alias, String^ sipPassword, String^ sipHostname, String^ sipusername);
     void refuseIncommingCall(String^ call);
     void acceptIncommingCall(String^ call);
     void placeCall(Contact^ contact);
@@ -102,7 +102,7 @@ internal:
 
     /* TODO : move members */
     ///bool hasConfig; // replaced by startingStatus
-    std::string accountName;
+    std::string accountName; // YOU SHOULD RM ME
     String ^ currentCallId; // to save ongoing call id during visibility change
 
     /* events */
@@ -155,10 +155,15 @@ private:
         }
     public:
         property Request request;
+        property String^ _alias;
         property String^ _callId;
         property String^ _pin;
-        property String^ _password;
+        property String^ _password; // refacto : is it safe ? are tasks destroy quickly after been used ?
         property String^ _accountId;
+        property bool _upnp;
+        property String^ _sipPassword;
+        property String^ _sipHostname;
+        property String^ _sipUsername;
     };
 
     /* functions */
diff --git a/SmartPanel.xaml b/SmartPanel.xaml
index 0d1fabdeedab664a93938f28b6cdd9fed19a3d7a..8773b596311bf80c206fd902cfc809cd51818253 100644
--- a/SmartPanel.xaml
+++ b/SmartPanel.xaml
@@ -35,6 +35,7 @@
         <views:HasAnActiveCall x:Key="_HasAnActiveCall_" />
         <views:AccountTypeToSourceImage x:Key="_AccountTypeToSourceImage_" />
         <views:AccountSelectedToVisibility x:Key="_AccountSelectedToVisibility_" />
+        <views:CollapseEmptyString x:Key="_CollapseEmptyString_" />
 
         <Style x:Key="addContactTextBoxStyle"
            TargetType="TextBox">
@@ -207,9 +208,15 @@
                            Style="{StaticResource TextStyle5}"
                            Text="{x:Bind  _account.name_, Mode=OneWay}"/>
                     <TextBlock x:Name="_ringID_"
-                           Grid.ColumnSpan="2"
-                           Style="{StaticResource TextStyle6}"
-                           Text="{x:Bind  _account.ringID_, Mode=OneWay}"/>
+                               Grid.ColumnSpan="2"
+                               Style="{StaticResource TextStyle6}"
+                               Visibility="{x:Bind  _account.ringID_, Converter={StaticResource _CollapseEmptyString_}, Mode=OneWay}"
+                               Text="{x:Bind  _account.ringID_, Mode=OneWay}"/>
+                    <TextBlock x:Name="_sipUsername_"
+                               Grid.ColumnSpan="2"
+                               Visibility="{x:Bind  _account._sipUsername, Converter={StaticResource _CollapseEmptyString_}, Mode=OneWay}"
+                               Style="{StaticResource TextStyle6}"
+                               Text="{x:Bind  _account._sipUsername, Mode=OneWay}"/>
                 </StackPanel>
             </Grid>
         </DataTemplate>
@@ -464,33 +471,77 @@
                 <StackPanel Orientation="Vertical"
                             Grid.Row="0"
                             Background="#FFE4F1F9">
-                    <StackPanel Orientation="Horizontal">
-                        <TextBlock VerticalAlignment="Center"
-                                   Text="Account type : "
-                                   Margin="10,10,0,10"/>
-                        <ComboBox x:Name="_accountTypeComboBox_"
+                    <!-- alias sub menu. -->
+                    <StackPanel Orientation="Horizontal" Margin="10">
+                        <TextBlock Style="{StaticResource TextSegoeStyle-20pt-black}"
+                                   Text="&#xE8EC;"/>
+                        <TextBlock Text="Alias" Margin="10"/>
+                    </StackPanel>
+                    <TextBox  x:Name="_ringAliasTextBox_"
+                              TextChanged="_ringAliasTextBox__TextChanged"
+                              Margin="10"
+                              PlaceholderText="Enter alias"/>
+                    <!-- account type chooser -->
+                    <StackPanel Orientation="Horizontal" Margin="10">
+                        <TextBlock Style="{StaticResource TextSegoeStyle-20pt-black}"
+                                   Text="&#xE168;"/>
+                        <TextBlock Text="Account type" Margin="10"/>
+                    </StackPanel>
+                    <ComboBox x:Name="_accountTypeComboBox_"
                                   SelectedIndex="0"
                                   Margin="10"
+                                  SelectionChanged="_accountTypeComboBox__SelectionChanged"
                                   VerticalAlignment="Center"
                                   Width="195">
-                            <ComboBoxItem Content="Ring"/>
-                            <ComboBoxItem Content="Sip"/>
-                        </ComboBox>
-                    </StackPanel>
+                        <ComboBoxItem Content="Ring"/>
+                        <ComboBoxItem Content="Sip"/>
+                    </ComboBox>
                     <!-- RING account. -->
                     <StackPanel x:Name="_ringAccountCreationStack_"
                                 Visibility="Visible">
-                        <TextBox  x:Name="_aliasTextBox_"
-                                  Margin="10"
-                                  PlaceholderText="Enter your username"/>
-                        <PasswordBox x:Name="_passwordBoxAccountCreation_"
+                        <!-- password sub menu. -->
+                        <StackPanel Orientation="Horizontal" Margin="10">
+                            <TextBlock Style="{StaticResource TextSegoeStyle-20pt-black}"
+                                   Text="&#xE8D7;"/>
+                            <TextBlock Text="Archive password" Margin="10"/>
+                        </StackPanel>
+                        <PasswordBox x:Name="_ringPasswordBoxAccountCreation_"
                                      Margin="10"
                                      PasswordChanged="_passwordBoxAccountCreationCheck__PasswordChanged"
-                                     PlaceholderText="Enter your password"/>
-                        <PasswordBox  x:Name="_passwordBoxAccountCreationCheck_"
+                                     PlaceholderText="Enter archive password"/>
+                        <PasswordBox  x:Name="_ringPasswordBoxAccountCreationCheck_"
                                       Margin="10"
                                       PasswordChanged="_passwordBoxAccountCreationCheck__PasswordChanged"
-                                      PlaceholderText="Repeat your Password"/>
+                                      PlaceholderText="Repeat archive Password"/>
+                        <!-- upnp sub menu. -->
+                        <StackPanel Orientation="Horizontal" Margin="10">
+                            <TextBlock Style="{StaticResource TextSegoeStyle-20pt-black}"
+                                   Text="&#xE15E;"/>
+                            <TextBlock Text="UPnP" Margin="10"/>
+                        </StackPanel>
+                        <ToggleSwitch x:Name="_upnpStateAccountCreation_"
+                                      IsOn="True"
+                                      Margin="20,10"/>
+                    </StackPanel>
+                    <!-- SIP account. -->
+                    <StackPanel x:Name="_sipAccountCreationStack_"
+                                Visibility="Collapsed">
+                        <StackPanel Orientation="Horizontal"
+                                    Margin="10">
+                            <TextBlock Style="{StaticResource TextSegoeStyle-20pt-black}"
+                                       Text="&#xE717;"/>
+                            <TextBlock Text="SIP account parameters"
+                                       Margin="10"/>
+                        </StackPanel>
+                        <TextBox  x:Name="_sipHostnameTextBox_"
+                                  Margin="10"
+                                  PlaceholderText="Enter hostname"/>
+                        <TextBox  x:Name="_sipUsernameTextBox_"
+                                  Margin="10"
+                                  PlaceholderText="Enter username"/>
+                        <PasswordBox x:Name="_sipPasswordBoxAccountCreation_"
+                                     Margin="10"
+                                     PlaceholderText="Enter password"/>
                     </StackPanel>
                 </StackPanel>
                 <!-- buttons yes/no to create the new account. -->
@@ -535,15 +586,37 @@
                     <TextBox  x:Name="_aliasTextBoxEditionMenu_"
                               FontSize="20"
                               Margin="20,10"
-                              PlaceholderText="Enter your username"/>
+                              PlaceholderText="Enter alias"/>
                     <!-- upnp sub menu. -->
-                    <StackPanel Orientation="Horizontal" Margin="10">
-                        <TextBlock Style="{StaticResource TextSegoeStyle-20pt-black}"
-                                   Text="&#xE15E;"/>
-                        <TextBlock Text="UPnP" Margin="10"/>
+                    <StackPanel x:Name="_upnpStackEditionMenu_">
+                        <StackPanel Orientation="Horizontal" Margin="10">
+                            <TextBlock Style="{StaticResource TextSegoeStyle-20pt-black}"
+                                       Text="&#xE15E;"/>
+                            <TextBlock Text="UPnP" Margin="10"/>
+                        </StackPanel>
+                        <ToggleSwitch x:Name="_upnpState_"
+                                      Margin="20,10"/>
+                    </StackPanel>
+                    <!-- SIP parameters. -->
+                    <StackPanel x:Name="_sipAccountStackEditionMenu_"
+                                Visibility="Collapsed">
+                        <StackPanel Orientation="Horizontal"
+                                    Margin="10">
+                            <TextBlock Style="{StaticResource TextSegoeStyle-20pt-black}"
+                                       Text="&#xE717;"/>
+                            <TextBlock Text="SIP account parameters"
+                                       Margin="10"/>
+                        </StackPanel>
+                        <TextBox  x:Name="_sipHostnameEditionMenu_"
+                                  Margin="10"
+                                  PlaceholderText="Enter hostname"/>
+                        <TextBox  x:Name="_sipUsernameEditionTextBox_"
+                                  Margin="10"
+                                  PlaceholderText="Enter username"/>
+                        <PasswordBox x:Name="_sipPasswordEditionMenu_"
+                                     Margin="10"
+                                     PlaceholderText="Enter password"/>
                     </StackPanel>
-                    <ToggleSwitch x:Name="_upnpState_"
-                                  Margin="20,10"/>
                     <!-- delete account sub menu. -->
                     <StackPanel Orientation="Horizontal" Margin="10">
                         <TextBlock Style="{StaticResource TextSegoeStyle-20pt-black}"
diff --git a/SmartPanel.xaml.cpp b/SmartPanel.xaml.cpp
index 951a693cd8048b16bdf8af230c757de817eafa58..caf31bd847a5a6b67976f75ec267d45547d4dbe1 100644
--- a/SmartPanel.xaml.cpp
+++ b/SmartPanel.xaml.cpp
@@ -248,34 +248,42 @@ void RingClientUWP::Views::SmartPanel::_addAccountBtn__Click(Platform::Object^ s
 {
     _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
     _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
+
     _createAccountYes_->IsEnabled = false;
+
+    _accountTypeComboBox_->SelectedIndex = 0;
+    _upnpStateAccountCreation_->IsOn = true;
+    _ringAliasTextBox_->Text = "";
 }
 
 void RingClientUWP::Views::SmartPanel::_createAccountYes__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
 {
-    switch (_accountTypeComboBox_->SelectedIndex)
-    {
-    case 0:
+    switch (_accountTypeComboBox_->SelectedIndex) {
+    case 0: /* RING account */
     {
-        RingD::instance->createRINGAccount(_aliasTextBox_->Text);
-        _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
-        _accountsMenuButton__Checked(nullptr, nullptr);
+        RingD::instance->createRINGAccount(_ringAliasTextBox_->Text, _ringPasswordBoxAccountCreation_->Password, _upnpStateAccountCreation_->IsOn);
+        _ringPasswordBoxAccountCreation_->Password = "";
+        _ringPasswordBoxAccountCreationCheck_->Password = "";
         break;
     }
     break;
-    case 1:
+    case 1: /* SIP account */
     {
-        RingD::instance->createSIPAccount(_aliasTextBox_->Text);
-        _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
-        _accountsMenuButton__Checked(nullptr, nullptr);
+        RingD::instance->createSIPAccount(_ringAliasTextBox_->Text, _sipPasswordBoxAccountCreation_->Password, _sipHostnameTextBox_->Text, _sipUsernameTextBox_->Text);
+        _sipPasswordBoxAccountCreation_->Password = "";
+        _sipUsernameTextBox_->Text = "";
+        _sipHostnameTextBox_->Text = "";
         break;
     }
     default:
         break;
     }
-    _aliasTextBox_->Text = "";
-    _passwordBoxAccountCreation_->Password = "";
-    _passwordBoxAccountCreationCheck_->Password = "";
+
+    _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+    _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+    _accountsMenuButton__Checked(nullptr, nullptr);
+
+
 }
 
 
@@ -728,6 +736,16 @@ void RingClientUWP::Views::SmartPanel::_editAccountMenuButton__Click(Platform::O
     _deleteAccountBtnEditionMenu_->IsChecked = false;
     _deleteAccountBtnEditionMenu_->IsEnabled = (AccountListItemsViewModel::instance->itemsList->Size > 1)? true : false;
     _createAccountYes_->IsEnabled = false;
+    _sipAccountStackEditionMenu_->Visibility = (account->accountType_ == "SIP")
+            ? Windows::UI::Xaml::Visibility::Visible
+            :Windows::UI::Xaml::Visibility::Collapsed;
+    _upnpStackEditionMenu_->Visibility = (account->accountType_ == "RING")
+                                         ? Windows::UI::Xaml::Visibility::Visible
+                                         : Windows::UI::Xaml::Visibility::Collapsed;
+    _sipHostnameEditionMenu_->Text = account->_sipHostname;
+    _sipUsernameEditionTextBox_->Text = account->_sipUsername;
+    _sipPasswordEditionMenu_->Password = account->_sipPassword;
+
 }
 
 
@@ -779,8 +797,64 @@ void RingClientUWP::Views::SmartPanel::OnaccountUpdated(RingClientUWP::Account ^
 
 void RingClientUWP::Views::SmartPanel::_passwordBoxAccountCreationCheck__PasswordChanged(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
 {
-    _createAccountYes_->IsEnabled = (_passwordBoxAccountCreation_->Password
-                                     == _passwordBoxAccountCreationCheck_->Password
-                                     && _passwordBoxAccountCreation_->Password->Length() > 0)
+    _createAccountYes_->IsEnabled = (_ringPasswordBoxAccountCreation_->Password
+                                     == _ringPasswordBoxAccountCreationCheck_->Password
+                                     && _ringPasswordBoxAccountCreation_->Password->Length() > 0)
                                     ? true : false;
 }
+
+
+void RingClientUWP::Views::SmartPanel::_accountTypeComboBox__SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e)
+{
+    auto accountTypeComboBox = dynamic_cast<ComboBox^>(sender);
+
+    /* avoid exception at start */
+    if (_ringAccountCreationStack_ == nullptr && _sipAccountCreationStack_ == nullptr)
+        return;
+
+    /* empty everything, avoid to keep credentials in memory... */
+    _ringPasswordBoxAccountCreation_->Password = "";
+    _ringPasswordBoxAccountCreationCheck_->Password = "";
+    _sipPasswordBoxAccountCreation_->Password = "";
+    _sipUsernameTextBox_->Text = "";
+    _sipHostnameTextBox_->Text = "";
+
+    if (accountTypeComboBox->SelectedIndex == 0 /* RING type is selected */) {
+        _ringAccountCreationStack_->Visibility = Windows::UI::Xaml::Visibility::Visible;
+        _sipAccountCreationStack_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+        _createAccountYes_->IsEnabled = false;
+        _upnpStateAccountCreation_->IsOn = true;
+    } else { /* SIP type is selected */
+        _ringAccountCreationStack_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+        _sipAccountCreationStack_->Visibility = Windows::UI::Xaml::Visibility::Visible;
+        _createAccountYes_->IsEnabled = (_ringAliasTextBox_->Text->IsEmpty()) ? false : true;
+    }
+}
+
+
+
+
+void RingClientUWP::Views::SmartPanel::_ringAliasTextBox__TextChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::TextChangedEventArgs^ e)
+{
+    _createAccountYes_->IsEnabled = (_ringAliasTextBox_->Text->IsEmpty()
+                                     || (_accountTypeComboBox_->SelectedIndex == 0 /* RING type is selected */
+                                         && _ringPasswordBoxAccountCreation_->Password->Length() < 1))
+                                    ? false : true;
+}
+
+Object ^ RingClientUWP::Views::CollapseEmptyString::Convert(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
+{
+    auto stringValue = dynamic_cast<String^>(value);
+
+    return (stringValue->IsEmpty())
+           ? Windows::UI::Xaml::Visibility::Collapsed
+           : Windows::UI::Xaml::Visibility::Visible;
+}
+
+Object ^ RingClientUWP::Views::CollapseEmptyString::ConvertBack(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
+{
+    throw ref new Platform::NotImplementedException();
+}
+
+RingClientUWP::Views::CollapseEmptyString::CollapseEmptyString()
+{}
diff --git a/SmartPanel.xaml.h b/SmartPanel.xaml.h
index 4cd5cabd2a2107dec63c94d870f8d3fe9240b855..2419ee70ca199b7c286f4e79e1f138f50529ef55 100644
--- a/SmartPanel.xaml.h
+++ b/SmartPanel.xaml.h
@@ -71,6 +71,13 @@ public:
     NewMessageBubleNotification();
 };
 
+public ref class CollapseEmptyString sealed : IValueConverter {
+public:
+    virtual Object^ Convert(Object^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object^ parameter, String^ language);
+    virtual Object^ ConvertBack(Object^ value, Windows::UI::Xaml::Interop::TypeName  targetType, Object^ parameter, String^ language);
+    CollapseEmptyString();
+};
+
 public ref class SmartPanel sealed
 {
 public:
@@ -124,6 +131,8 @@ private:
     void _cancelAccountModification__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
     void OnaccountUpdated(RingClientUWP::Account ^account);
     void _passwordBoxAccountCreationCheck__PasswordChanged(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
+    void _accountTypeComboBox__SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e);
+    void _ringAliasTextBox__TextChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::TextChangedEventArgs^ e);
 };
 }
 }
\ No newline at end of file