diff --git a/Account.cpp b/Account.cpp
index cdbd9e257fc49396ece5045c4decba8026d11e57..adbecb6e0af6e073fb7e28da31ad002efa4c6c17 100644
--- a/Account.cpp
+++ b/Account.cpp
@@ -43,7 +43,7 @@ Account::NotifyPropertyChanged(String^ propertyName)
 {
     CoreApplicationView^ view = CoreApplication::MainView;
     view->CoreWindow->Dispatcher->RunAsync(
-        CoreDispatcherPriority::Normal,
+        CoreDispatcherPriority::High,
         ref new DispatchedHandler([this, propertyName]()
     {
         PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName));
diff --git a/Call.cpp b/Call.cpp
index 6cc2fe319c51b0968b9baf34f07855fb010e4259..1854a8fe2ff61de3ca67f7db71118823d5140ce9 100644
--- a/Call.cpp
+++ b/Call.cpp
@@ -44,7 +44,7 @@ Call::NotifyPropertyChanged(String^ propertyName)
 {
     CoreApplicationView^ view = CoreApplication::MainView;
     view->CoreWindow->Dispatcher->RunAsync(
-        CoreDispatcherPriority::Normal,
+        CoreDispatcherPriority::High,
         ref new DispatchedHandler([this, propertyName]()
     {
         PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName));
@@ -52,17 +52,18 @@ Call::NotifyPropertyChanged(String^ propertyName)
     }));
 }
 
-void RingClientUWP::Call::refuse()
-{
-    RingD::instance->refuseIncommingCall(this);
-}
-
-void RingClientUWP::Call::accept()
-{
-    RingD::instance->acceptIncommingCall(this);
-}
-
-void RingClientUWP::Call::cancel()
-{
-    RingD::instance->cancelOutGoingCall(this);
-}
+//void RingClientUWP::Call::refuse()
+//{
+//    RingD::instance->refuseIncommingCall(this);
+//}
+//
+//void RingClientUWP::Call::accept()
+//{
+//    RingD::instance->acceptIncommingCall(this);
+//}
+//
+//void RingClientUWP::Call::cancel()
+//{
+//    MSG_("!2--->> cancel");
+//    RingD::instance->cancelOutGoingCall(this);
+//}
diff --git a/Call.h b/Call.h
index dfebe2140fe5a92904a0c6424da3772a37de669c..fc96d3af4459921cd35b10e7504649f9f2cb87de 100644
--- a/Call.h
+++ b/Call.h
@@ -56,9 +56,9 @@ protected:
     void NotifyPropertyChanged(String^ propertyName);
 
 internal:
-    void refuse();
-    void accept();
-    void cancel();
+    //void refuse();
+    //void accept();
+    //void cancel();
 
 private:
     CallStatus state_;
diff --git a/CallsViewModel.h b/CallsViewModel.h
index 24ddbb0e82fe8f32ed5e6325f4b3b0efa2610516..21c68ff08c8746cc81ae1d7927f4acfeba0d905d 100644
--- a/CallsViewModel.h
+++ b/CallsViewModel.h
@@ -44,7 +44,7 @@ internal:
     /* functions */
     Call^ addNewCall(String^ accountId, String^ callId, String^ from);
     void clearCallsList();
-    void setState(String^ callId, String^ state, int code); // used ?
+    //void setState(String^ callId, String^ state, int code); // used ?
     Call^ findCall(String^ callId);
 
     /* properties */
diff --git a/Contact.cpp b/Contact.cpp
index 155a7ff3de63e6bf050d13587355118a0d2768db..2d94ec1f9497862a388b1fa7c47bb86eb77b137e 100644
--- a/Contact.cpp
+++ b/Contact.cpp
@@ -52,7 +52,7 @@ Contact::Contact(String^ name,
 
     String^ fileContents = Utils::toPlatformString(Utils::getStringFromFile(Utils::toString(messagesFile)));
 
-    CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+    CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
     ref new DispatchedHandler([=]() {
         if (fileContents != nullptr)
             DestringifyConversation(fileContents);
@@ -72,7 +72,7 @@ Contact::NotifyPropertyChanged(String^ propertyName)
 {
     CoreApplicationView^ view = CoreApplication::MainView;
     view->CoreWindow->Dispatcher->RunAsync(
-        CoreDispatcherPriority::Normal,
+        CoreDispatcherPriority::High,
         ref new DispatchedHandler([this, propertyName]()
     {
         PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName));
diff --git a/ContactsViewModel.cpp b/ContactsViewModel.cpp
index cb98f5840b03d201a26673a96c1efe7e8c044436..067f2954f4a52b61ea3c785d9bc3110557422bcd 100644
--- a/ContactsViewModel.cpp
+++ b/ContactsViewModel.cpp
@@ -118,7 +118,7 @@ ContactsViewModel::openContactsFromFile()
 
     String^ fileContents = Utils::toPlatformString(Utils::getStringFromFile(Utils::toString(contactsFile)));
 
-    CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+    CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
     ref new DispatchedHandler([=]() {
         if (fileContents != nullptr)
             Destringify(fileContents);
diff --git a/LoadingPage.xaml.cpp b/LoadingPage.xaml.cpp
index a8d24bc2dd374cd932b209deaef649d2a73e5a74..ac0b6cf69882edbb54934d3c77dc77b1f9d50264 100644
--- a/LoadingPage.xaml.cpp
+++ b/LoadingPage.xaml.cpp
@@ -53,13 +53,13 @@ LoadingPage::LoadingPage()
     {
         if (config_exists) {
             RingD::instance->hasConfig = true;
-            this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this] () {
+            this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([this] () {
                 this->Frame->Navigate(Windows::UI::Xaml::Interop::TypeName(MainPage::typeid));
             }));
         }
         else {
             RingD::instance->hasConfig = false;
-            this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this] () {
+            this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([this] () {
                 this->Frame->Navigate(Windows::UI::Xaml::Interop::TypeName(Wizard::typeid));
             }));
         }
diff --git a/RingD.cpp b/RingD.cpp
index 38033d87208fb76b6197d078c8058dc8dedfaf64..fba4158fd91cfbdf882f5e3887eca9aa3333d911 100644
--- a/RingD.cpp
+++ b/RingD.cpp
@@ -126,6 +126,7 @@ void RingClientUWP::RingD::acceptIncommingCall(Call^ call)
 
 void RingClientUWP::RingD::placeCall(Contact^ contact)
 {
+    MSG_("!--->> placeCall");
     auto to = contact->ringID_;
     auto accountId = AccountsViewModel::instance->selectedAccount->accountID_;
 
@@ -134,6 +135,8 @@ void RingClientUWP::RingD::placeCall(Contact^ contact)
 
     auto callId2 = DRing::placeCall(accountId2, to2);
 
+
+
     if (callId2 == "") {
         WNG_("call not created, the daemon didn't return a call Id");
         return;
@@ -141,6 +144,13 @@ void RingClientUWP::RingD::placeCall(Contact^ contact)
 
     auto callId = Utils::toPlatformString(callId2);
 
+
+    //auto con = ContactsViewModel::instance->findContactByName(to);
+    auto item = SmartPanelItemsViewModel::instance->findItem(contact);
+    item->_callId = callId;
+    MSG_("$1 place call with id : " + Utils::toString(item->_callId));
+
+
     auto call = CallsViewModel::instance->addNewCall(accountId, callId, to);
     call->isOutGoing = true;
 
@@ -156,7 +166,15 @@ void RingClientUWP::RingD::placeCall(Contact^ contact)
 void
 RingClientUWP::RingD::cancelOutGoingCall(Call^ call)
 {
-    tasksList_.push(ref new RingD::Task(Request::CancelOutGoingCall, call));
+    MSG_("1!--->> cancelOutGoingCall");
+    if (call)
+        tasksList_.push(ref new RingD::Task(Request::CancelOutGoingCall, call));
+}
+
+void RingClientUWP::RingD::cancelOutGoingCall2(String ^ callId)
+{
+    MSG_("$1 cancelOutGoingCall2 : " + Utils::toString(callId));
+    tasksList_.push(ref new RingD::Task(Request::HangUpCall, callId, 0));
 }
 
 void
@@ -165,6 +183,12 @@ RingClientUWP::RingD::hangUpCall(Call^ call)
     tasksList_.push(ref new RingD::Task(Request::HangUpCall, call));
 }
 
+void RingClientUWP::RingD::hangUpCall2(String ^ callId)
+{
+    MSG_("$1 hangUpCall2 : "+Utils::toString(callId));
+    tasksList_.push(ref new RingD::Task(Request::HangUpCall, callId, 0));
+}
+
 void
 RingClientUWP::RingD::startDaemon()
 {
@@ -199,10 +223,16 @@ RingClientUWP::RingD::startDaemon()
                 from2 = Utils::TrimRingId(from2);
 
                 CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(
-                    CoreDispatcherPriority::Normal, ref new DispatchedHandler([=]()
+                    CoreDispatcherPriority::High, ref new DispatchedHandler([=]()
                 {
                     incomingCall(accountId2, callId2, from2);
                     stateChange(callId2, CallStatus::INCOMING_RINGING, 0);
+
+
+                    auto contact = ContactsViewModel::instance->findContactByName(from2);
+                    auto item = SmartPanelItemsViewModel::instance->findItem(contact);
+                    item->_callId = callId2;
+
                 }));
             }),
             DRing::exportable_callback<DRing::CallSignal::StateChange>([this](
@@ -222,7 +252,7 @@ RingClientUWP::RingD::startDaemon()
 
 
                 CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(
-                    CoreDispatcherPriority::Low, ref new DispatchedHandler([=]()
+                    CoreDispatcherPriority::High, ref new DispatchedHandler([=]()
                 {
                     stateChange(callId2, state3, code);
                 }));
@@ -243,7 +273,7 @@ RingClientUWP::RingD::startDaemon()
                     MSG_("payload = " + i.second);
                     auto payload = Utils::toPlatformString(i.second);
                     CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(
-                        CoreDispatcherPriority::Low, ref new DispatchedHandler([=]()
+                        CoreDispatcherPriority::High, ref new DispatchedHandler([=]()
                     {
                         incomingAccountMessage(accountId2, from2, payload);
                     }));
@@ -282,7 +312,7 @@ RingClientUWP::RingD::startDaemon()
 
                     auto payload = Utils::toPlatformString(i.second);
                     CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(
-                        CoreDispatcherPriority::Low, ref new DispatchedHandler([=]()
+                        CoreDispatcherPriority::High, ref new DispatchedHandler([=]()
                     {
                         incomingAccountMessage(accountId2, from2, payload);
                     }));
@@ -294,7 +324,7 @@ RingClientUWP::RingD::startDaemon()
             {
                 MSG_("<RegistrationStateChanged>: ID = " + account_id + "state = " + state);
                 if (state == DRing::Account::States::REGISTERED) {
-                    CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+                    CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
                     ref new DispatchedHandler([=]() {
                         auto frame = dynamic_cast<Frame^>(Window::Current->Content);
                         dynamic_cast<RingClientUWP::MainPage^>(frame->Content)->showLoadingOverlay(false, false);
@@ -303,14 +333,14 @@ RingClientUWP::RingD::startDaemon()
             }),
             DRing::exportable_callback<DRing::ConfigurationSignal::AccountsChanged>([this]()
             {
-                CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+                CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
                 ref new DispatchedHandler([=]() {
                     reloadAccountList();
                 }));
             }),
             DRing::exportable_callback<DRing::Debug::MessageSend>([&](const std::string& toto)
             {
-                dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+                dispatcher->RunAsync(CoreDispatcherPriority::High,
                 ref new DispatchedHandler([=]() {
                     RingDebug::instance->print(toto);
                 }));
@@ -359,9 +389,9 @@ RingClientUWP::RingD::startDaemon()
         {
             DRing::exportable_callback<DRing::VideoSignal::GetCameraInfo>
             ([this](const std::string& device,
-                    std::vector<std::string> *formats,
-                    std::vector<unsigned> *sizes,
-                    std::vector<unsigned> *rates) {
+            std::vector<std::string> *formats,
+            std::vector<unsigned> *sizes,
+            std::vector<unsigned> *rates) {
                 MSG_("\n<GetCameraInfo>\n");
                 auto device_list = VideoManager::instance->captureManager()->deviceList;
 
@@ -384,7 +414,7 @@ RingClientUWP::RingD::startDaemon()
                     std::string format,
                     const int width,
                     const int height,
-                    const int rate) {
+            const int rate) {
                 MSG_("\n<SetParameters>\n");
                 VideoManager::instance->captureManager()->activeDevice->SetDeviceProperties(
                     Utils::toPlatformString(format),width,height,rate);
@@ -392,7 +422,7 @@ RingClientUWP::RingD::startDaemon()
             DRing::exportable_callback<DRing::VideoSignal::StartCapture>
             ([&](const std::string& device) {
                 MSG_("\n<StartCapture>\n");
-                dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+                dispatcher->RunAsync(CoreDispatcherPriority::High,
                 ref new DispatchedHandler([=]() {
                     VideoManager::instance->captureManager()->InitializeCameraAsync();
                     VideoManager::instance->captureManager()->videoFrameCopyInvoker->Start();
@@ -401,7 +431,7 @@ RingClientUWP::RingD::startDaemon()
             DRing::exportable_callback<DRing::VideoSignal::StopCapture>
             ([&]() {
                 MSG_("\n<StopCapture>\n");
-                dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+                dispatcher->RunAsync(CoreDispatcherPriority::High,
                 ref new DispatchedHandler([=]() {
                     VideoManager::instance->captureManager()->StopPreviewAsync();
                     if (VideoManager::instance->captureManager()->captureTaskTokenSource)
@@ -425,7 +455,7 @@ RingClientUWP::RingD::startDaemon()
                 tasksList_.push(ref new RingD::Task(Request::AddSIPAccount));
             }
             else {
-                CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+                CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
                 ref new DispatchedHandler([=]() {
                     reloadAccountList();
                 }));
@@ -487,6 +517,12 @@ RingD::dequeueTasks()
         case Request::CancelOutGoingCall:
         case Request::HangUpCall:
         {
+
+            MSG_("1!--->> Request::CancelOutGoingCall");
+            auto id = task->_callId;
+            DRing::hangUp(Utils::toString(id));
+            return;
+
             auto callId = task->_call->callId;
             auto callId2 = Utils::toString(callId);
             DRing::hangUp(callId2);
diff --git a/RingD.h b/RingD.h
index 06334a68891ee47518f11aa162dda90bb1ee39f1..7a22790d55566b0fcad5dbdd871598e67208097a 100644
--- a/RingD.h
+++ b/RingD.h
@@ -52,6 +52,9 @@ public:
         }
     }
 
+    void cancelOutGoingCall2(String^ callId); // marche
+
+
 internal:
     /* functions */
     void startDaemon();
@@ -63,7 +66,10 @@ internal:
     void acceptIncommingCall(Call^ call);
     void placeCall(Contact^ contact);
     void cancelOutGoingCall(Call^ call);
+    /*void cancelOutGoingCall2(String^ callId);*/ // marche pas
+
     void hangUpCall(Call^ call);
+    void hangUpCall2(String^ callId);
 
     /* TODO : move members */
     bool hasConfig;
@@ -96,9 +102,14 @@ private:
             request = r;
             _call = c;
         }
+        Task(Request r, String^ c, int i) {
+            request = r;
+            _callId = c;
+        }
     public:
         property Request request;
         property Call^ _call;
+        property String^ _callId;
     };
 
     /* functions */
diff --git a/RingDebug.h b/RingDebug.h
index 2398085ca8244bb672572f48934ecd60c150cd0c..c7cee0a615dc7a8a94e5cc3b8fa46a6531bf0f96 100644
--- a/RingDebug.h
+++ b/RingDebug.h
@@ -68,13 +68,13 @@ void WriteException(Exception^ ex)
     OutputDebugString(wStringstream.str().c_str());
 }
 
-#define MSG_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Low, \
+#define MSG_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, \
 ref new DispatchedHandler([=]() { RingDebug::instance->print(cstr); }))
 
-#define WNG_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Low, \
+#define WNG_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, \
 ref new DispatchedHandler([=]() { RingDebug::instance->print(std::string(cstr), RingDebug::Type::WNG); }))
 
-#define ERR_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Low, \
+#define ERR_(cstr) CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, \
 ref new DispatchedHandler([=]() { RingDebug::instance->print(std::string(cstr), RingDebug::Type::ERR); }))
 
 }
diff --git a/SmartPanel.xaml.cpp b/SmartPanel.xaml.cpp
index e0914749937c6c5cc4bcbc0ad31617532afd077b..d1d01f5ddfab45755d334c024274e352ad3ff3eb 100644
--- a/SmartPanel.xaml.cpp
+++ b/SmartPanel.xaml.cpp
@@ -108,6 +108,7 @@ SmartPanel::SmartPanel()
 
     RingD::instance->calling += ref new RingClientUWP::Calling([&](
     Call^ call) {
+        MSG_("!--->> Calling lambda from smartpanel");
         auto from = call->from;
         auto contact = ContactsViewModel::instance->findContactByName(from);
 
@@ -124,6 +125,7 @@ SmartPanel::SmartPanel()
         }
 
         call->state = CallStatus::SEARCHING;
+        MSG_("!--->> should be Searching");
 
         item->_call = call;
     });
@@ -321,40 +323,63 @@ void RingClientUWP::Views::SmartPanel::_ringTxtBx__Click(Platform::Object^ sende
 void RingClientUWP::Views::SmartPanel::_rejectIncomingCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
 {
     auto button = dynamic_cast<Button^>(e->OriginalSource);
-    auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
-    auto call = item->_call;
-
-    call->refuse();
+    if (button) {
+        auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
+        if (item) {
+            auto call = item->_call;
+            if (call)
+                RingD::instance->refuseIncommingCall(call);
+            //call->refuse();
+        }
+    }
 }
 
 
 void RingClientUWP::Views::SmartPanel::_acceptIncomingCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
 {
     auto button = dynamic_cast<Button^>(e->OriginalSource);
-    auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
-    auto call = item->_call;
-
-    call->accept();
+    if (button) {
+        auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
+        if (item) {
+            auto call = item->_call;
+            if (call)
+                RingD::instance->acceptIncommingCall(call);
+            //call->accept();
+        }
+    }
 }
 
 void
 SmartPanel::_callContact__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
 {
+    MSG_("!--->> _callContact__Click");
     auto button = dynamic_cast<Button^>(e->OriginalSource);
-    auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
-    auto contact = item->_contact;
-
-    RingD::instance->placeCall(contact);
+    if (button) {
+        auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
+        if (item) {
+            auto contact = item->_contact;
+            if (contact)
+                RingD::instance->placeCall(contact);
+        }
+    }
 }
 
 
 void RingClientUWP::Views::SmartPanel::_cancelCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
 {
     auto button = dynamic_cast<Button^>(e->OriginalSource);
-    auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
-    auto call = item->_call;
+    if (button) {
+        auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
+        if (item) {
+            auto call = item->_call;
+            RingD::instance->cancelOutGoingCall2(item->_callId);
 
-    call->cancel();
+            return;
+            if (call)
+                RingD::instance->cancelOutGoingCall(call);
+            //call->cancel();
+        }
+    }
 }
 
 
diff --git a/SmartPanelItem.cpp b/SmartPanelItem.cpp
index d93b454f8763fd12b73397364ec3bb9c2c0466a6..35c77deebc1644b2aa8fc466397a724f4d26f634 100644
--- a/SmartPanelItem.cpp
+++ b/SmartPanelItem.cpp
@@ -33,6 +33,8 @@ SmartPanelItem::SmartPanelItem()
 {
     /* create an empty call to avoid the call bar */
     _call = ref new Call("", "", "");
+    _callId = "";
+
 }
 
 void
@@ -40,7 +42,7 @@ SmartPanelItem::NotifyPropertyChanged(String^ propertyName)
 {
     CoreApplicationView^ view = CoreApplication::MainView;
     view->CoreWindow->Dispatcher->RunAsync(
-        CoreDispatcherPriority::Normal,
+        CoreDispatcherPriority::High,
         ref new DispatchedHandler([this, propertyName]()
     {
         PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName));
diff --git a/SmartPanelItem.h b/SmartPanelItem.h
index 0803fb1061c07a712496032f812d946eb86c784c..45a7e39c9ae7ec84899e845cfbdde7a7fbd0c5f9 100644
--- a/SmartPanelItem.h
+++ b/SmartPanelItem.h
@@ -57,6 +57,8 @@ public:
         }
     }
 
+    property String^ _callId;
+
 protected:
     void NotifyPropertyChanged(String^ propertyName);
 
diff --git a/SmartPanelItemsViewModel.h b/SmartPanelItemsViewModel.h
index 7bcdfe72f68fe1cc8d2d589f4f07f009decd3bd7..029b16541c36ec52487a3ed2be0d3e1c3878a8e4 100644
--- a/SmartPanelItemsViewModel.h
+++ b/SmartPanelItemsViewModel.h
@@ -73,6 +73,7 @@ private:
     SmartPanelItem^ currentItem_;
     SmartPanelItem^ oldItem_;
 
+
 };
 }
 }
diff --git a/UserPreferences.cpp b/UserPreferences.cpp
index c9fd121fb2b1a0f5c7b3b718d02ab9ce33e0454e..96d3afdd593ea1785b860c6e820fc71cd65b2cf5 100644
--- a/UserPreferences.cpp
+++ b/UserPreferences.cpp
@@ -50,7 +50,7 @@ UserPreferences::load()
 
     String^ fileContents = Utils::toPlatformString(Utils::getStringFromFile(Utils::toString(preferencesFile)));
 
-    CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+    CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
     ref new DispatchedHandler([=]() {
         if (fileContents != nullptr) {
             Destringify(fileContents);
diff --git a/VideoPage.xaml.cpp b/VideoPage.xaml.cpp
index ee44f937e1374efa74267b66b9afbe31fddbbbd6..657d1c1feb837e8d045fb6140823639371b8407a 100644
--- a/VideoPage.xaml.cpp
+++ b/VideoPage.xaml.cpp
@@ -61,14 +61,14 @@ VideoPage::VideoPage()
     VideoManager::instance->rendererManager()->writeVideoFrame +=
         ref new WriteVideoFrame([this](String^ id, uint8_t* buf, int width, int height)
     {
-        CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+        CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
         ref new DispatchedHandler([=]() {
             try {
                 if (!VideoManager::instance->rendererManager()->renderers->Size)
                     return;
                 VideoManager::instance->rendererManager()->renderer(id)->isRendering = true;
                 create_task(WriteFrameAsSoftwareBitmapAsync(id, buf, width, height))
-                    .then([=](task<void> previousTask) {
+                .then([=](task<void> previousTask) {
                     try {
                         previousTask.get();
                     }
@@ -88,8 +88,8 @@ VideoPage::VideoPage()
     {
         PreviewImage->Visibility = Windows::UI::Xaml::Visibility::Visible;
         PreviewImage->FlowDirection = VideoManager::instance->captureManager()->mirroringPreview ?
-            Windows::UI::Xaml::FlowDirection::RightToLeft :
-            Windows::UI::Xaml::FlowDirection::LeftToRight;
+                                      Windows::UI::Xaml::FlowDirection::RightToLeft :
+                                      Windows::UI::Xaml::FlowDirection::LeftToRight;
     });
 
     VideoManager::instance->captureManager()->stopPreviewing +=
@@ -205,8 +205,15 @@ void RingClientUWP::Views::VideoPage::_btnHangUp__Tapped(Platform::Object^ sende
     auto item = SmartPanelItemsViewModel::instance->_selectedItem;
     auto call = item->_call;
 
-    if (call)
-        RingD::instance->hangUpCall(call);
+    /*if (call)
+        RingD::instance->hangUpCall(call);*/
+
+    if (item->_callId != "") {
+        MSG_("$1 item->callid != vide ");
+        RingD::instance->hangUpCall2(item->_callId);
+        item->_callId = "";
+    }
+
     pressHangUpCall();
 }
 
@@ -325,7 +332,7 @@ VideoPage::WriteFrameAsSoftwareBitmapAsync(String^ id, uint8_t* buf, int width,
 
     auto sbSource = ref new Media::Imaging::SoftwareBitmapSource();
     return create_task(sbSource->SetBitmapAsync(frame))
-        .then([this, sbSource]()
+           .then([this, sbSource]()
     {
         try {
             IncomingVideoImage->Source = sbSource;
diff --git a/Wizard.xaml.cpp b/Wizard.xaml.cpp
index b706b592890201a52755cbddbb81259a14b4d656..13c95565b0225e0ce5a447076210767f3c0f08b8 100644
--- a/Wizard.xaml.cpp
+++ b/Wizard.xaml.cpp
@@ -38,7 +38,7 @@ Wizard::_createAccountYes__Click(Object^ sender, RoutedEventArgs^ e)
     std::string str(wstr.begin(), wstr.end());
     RingD::instance->hasConfig = false;
     RingD::instance->accountName = std::string(wstr.begin(), wstr.end());
-    this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this] () {
+    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));
     }));
 }
diff --git a/pch.h b/pch.h
index 7a002b4f5f9419dc47c34fbc2ce5df6c7cadf579..20d873b3df7cb9eba02f6011d0d8a29c7e41e11e 100644
--- a/pch.h
+++ b/pch.h
@@ -26,6 +26,7 @@
 #include <sstream>
 #include <string>
 
+
 /* required by generated headers. */
 #include "App.xaml.h"
 #include "Account.h"