diff --git a/AboutPage.xaml b/AboutPage.xaml
index ad8fcf41a534a1ad0f605af9fa89f3fdf5896a16..c46a2aa58b112023888208c6552b6b5e8ba03190 100644
--- a/AboutPage.xaml
+++ b/AboutPage.xaml
@@ -72,7 +72,7 @@
                                 VerticalScrollBarVisibility="Hidden">
                     <StackPanel MaxWidth="500"
                                 Width="310">
-                        <TextBlock  Text="Ring version: 2016/12/29"
+                        <TextBlock  Text="Ring version: 2017/1/3"
                                     TextWrapping="Wrap"
                                     TextAlignment="Justify"
                                      Margin="0,0,0,24"
diff --git a/ContactsViewModel.cpp b/ContactsViewModel.cpp
index 3debaef7bf9e15893feed02c8ee0a5e96cb255ba..f3c726201273909f04ee80b72b2c98106451b0c2 100644
--- a/ContactsViewModel.cpp
+++ b/ContactsViewModel.cpp
@@ -146,7 +146,7 @@ ContactsViewModel::Stringify()
 {
     JsonArray^ jsonArray = ref new JsonArray();
 
-    for (unsigned int i = 0; i < contactsList_->Size; i++) {
+    for (int i = contactsList_->Size - 1; i >= 0; i--) {
         jsonArray->Append(contactsList_->GetAt(i)->ToJsonObject());
     }
 
@@ -170,7 +170,7 @@ ContactsViewModel::Destringify(String^ data)
     String^			lastTime;
 
     JsonArray^ contactlist = jsonObject->GetNamedArray(contactListKey, ref new JsonArray());
-    for (unsigned int i = 0; i < contactlist->Size; i++) {
+    for (int i = contactlist->Size - 1; i >= 0; i--) {
         IJsonValue^ contact = contactlist->GetAt(i);
         if (contact->ValueType == JsonValueType::Object) {
             JsonObject^ jsonContactObject = contact->GetObject();
diff --git a/Package.appxmanifest b/Package.appxmanifest
index 209ddd873accf7c3d49f63c1bce82025a345ee3a..71f87a49ce60b5cb78c55d895db591f317c849c7 100644
--- a/Package.appxmanifest
+++ b/Package.appxmanifest
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" IgnorableNamespaces="uap uap3 mp">
-  <Identity Name="Savoir-faireLinux.GNURing" Publisher="CN=8121A5F7-3CA1-4CAA-92B2-4F595B011941" Version="1.1.20.0" />
+  <Identity Name="Savoir-faireLinux.GNURing" Publisher="CN=8121A5F7-3CA1-4CAA-92B2-4F595B011941" Version="1.1.21.0" />
   <mp:PhoneIdentity PhoneProductId="2385953f-9019-423d-aa82-d1bbacfa258b" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
   <Properties>
     <DisplayName>GNU Ring</DisplayName>
diff --git a/SmartPanel.xaml.cpp b/SmartPanel.xaml.cpp
index 2ee06291e553d7b6afe6cf20f2a689ef4e5673b6..b135fcc281ee94ffbbc37e6a9b9c02af619b2c5e 100644
--- a/SmartPanel.xaml.cpp
+++ b/SmartPanel.xaml.cpp
@@ -121,7 +121,8 @@ SmartPanel::SmartPanel()
     ContactsViewModel::instance->contactAdded += ref new ContactAdded([this](Contact^ contact) {
         auto smartPanelItem = ref new SmartPanelItem();
         smartPanelItem->_contact = contact;
-        SmartPanelItemsViewModel::instance->itemsList->Append(smartPanelItem);
+        contact->_lastTime;
+        SmartPanelItemsViewModel::instance->itemsList->InsertAt(0, smartPanelItem);
     });
 
     RingD::instance->exportOnRingEnded += ref new RingClientUWP::ExportOnRingEnded(this, &RingClientUWP::Views::SmartPanel::OnexportOnRingEnded);
@@ -154,8 +155,8 @@ SmartPanel::OnstateChange(Platform::String ^callId, RingClientUWP::CallStatus st
     case CallStatus::ENDED:
     {
         auto callsList = DRing::getCallList();
-            if (callsList.empty())
-                _settingsMenuButton_->Visibility = VIS::Visible;
+        if (callsList.empty())
+            _settingsMenuButton_->Visibility = VIS::Visible;
         break;
     }
     case CallStatus::IN_PROGRESS:
diff --git a/SmartPanelItemsViewModel.cpp b/SmartPanelItemsViewModel.cpp
index 5257cb7a07d137672d74349832fba474409c8b6e..df4fb560e97b350636f5776b94e28e33d64fde5c 100644
--- a/SmartPanelItemsViewModel.cpp
+++ b/SmartPanelItemsViewModel.cpp
@@ -89,11 +89,19 @@ void RingClientUWP::ViewModel::SmartPanelItemsViewModel::removeItem(SmartPanelIt
 
 void RingClientUWP::ViewModel::SmartPanelItemsViewModel::moveItemToTheTop(SmartPanelItem ^ item)
 {
-    unsigned int index;
+    unsigned int spi_index, cl_index;
+
+    if (itemsList->IndexOf(item, &spi_index)) {
+        if (spi_index != 0) {
+
+            auto contactList = ContactsViewModel::instance->contactsList;
+            auto contactListItem = ContactsViewModel::instance->findContactByName(item->_contact->_name);
+            contactList->IndexOf(contactListItem, &cl_index);
+            contactList->RemoveAt(cl_index);
+            contactList->Append(contactListItem);
+            ContactsViewModel::instance->saveContactsToFile();
 
-    if (itemsList->IndexOf(item, &index)) {
-        if (index != 0) {
-            itemsList->RemoveAt(index);
+            itemsList->RemoveAt(spi_index);
             itemsList->InsertAt(0, item);
             item->_isHovered = false;
         }
diff --git a/VCardUtils.cpp b/VCardUtils.cpp
index 7751fe50785641b97931a6b40fc1899bd74e6aa6..7b23035a9b32f87b4b8beb35367c01243c891a54 100644
--- a/VCardUtils.cpp
+++ b/VCardUtils.cpp
@@ -56,11 +56,17 @@ VCard::receiveChunk(const std::string& args, const std::string& payload)
 
         m_mParts.clear();
 
+        bool foundUID = false;
         while (std::getline(_payload, _line)) {
-            if (_line.find("UID:") != std::string::npos)
+            if (_line.find("UID:") != std::string::npos) {
+                foundUID =  true;
                 break;
+            }
         }
-        m_mParts[Property::UID] = _line.substr(4);
+        if (foundUID)
+            m_mParts[Property::UID] = _line.substr(4);
+        else
+            m_mParts[Property::UID] = Utils::genID(0LL, 9999999999999LL);
 
         bool fnFound = false;
         while (std::getline(_payload, _line)) {
diff --git a/_language-fr.appx b/_language-fr.appx
index e746d12fb16dffb904cd71b667db035b955953a2..d8862e0c6b2750b7d59f8d65a167c0f599205e9b 100644
Binary files a/_language-fr.appx and b/_language-fr.appx differ
diff --git a/_scale-100.appx b/_scale-100.appx
index e5105619d48fbbca8f50d68553f2cdf40df24ab3..d9d035bb4a0ad11a84111b5b051a2913f146d790 100644
Binary files a/_scale-100.appx and b/_scale-100.appx differ
diff --git a/_scale-125.appx b/_scale-125.appx
index 14f6ca91f010d745c58dfe653887beacf706f54f..737754afb6d516df606e93c06bbea5be4e17e888 100644
Binary files a/_scale-125.appx and b/_scale-125.appx differ
diff --git a/_scale-150.appx b/_scale-150.appx
index a0ae140e3579481032563623d5c1e1e88351af90..6e1aadb2df081e41fece15ae42fc0fbde1a714a0 100644
Binary files a/_scale-150.appx and b/_scale-150.appx differ
diff --git a/_scale-400.appx b/_scale-400.appx
index 1bfdeab51a14996f145c4c910104b4bfb4e7427e..5520c2dfad3032df08761715bad34d06276778d5 100644
Binary files a/_scale-400.appx and b/_scale-400.appx differ