diff --git a/SmartPanel.xaml.cpp b/SmartPanel.xaml.cpp
index 0157695aba25c2a68454699ec7aef88820ca34b5..2ee06291e553d7b6afe6cf20f2a689ef4e5673b6 100644
--- a/SmartPanel.xaml.cpp
+++ b/SmartPanel.xaml.cpp
@@ -115,42 +115,7 @@ SmartPanel::SmartPanel()
         }
 
     });
-    RingD::instance->stateChange += ref new StateChange([this](String^ callId, CallStatus state, int code) {
-
-        auto item = SmartPanelItemsViewModel::instance->findItem(callId);
-
-        if (!item) {
-            WNG_("item not found");
-            return;
-        }
-
-        switch (state) {
-        case CallStatus::NONE:
-        case CallStatus::ENDED:
-        {
-            auto callsList = DRing::getCallList();
-            if (callsList.empty())
-                _settingsMenuButton_->Visibility = VIS::Visible;
-            break;
-        }
-        case CallStatus::IN_PROGRESS:
-        {
-            SmartPanelItemsViewModel::instance->_selectedItem = item;
-            summonVideoPage();
-            break;
-        }
-        case CallStatus::PEER_PAUSED:
-        case CallStatus::PAUSED:
-        {
-            SmartPanelItemsViewModel::instance->_selectedItem = item;
-            summonVideoPage();
-            break;
-        }
-        default:
-            break;
-        }
-
-    });
+    RingD::instance->stateChange += ref new StateChange(this, &SmartPanel::OnstateChange);
     RingD::instance->devicesListRefreshed += ref new RingClientUWP::DevicesListRefreshed(this, &RingClientUWP::Views::SmartPanel::OndevicesListRefreshed);
 
     ContactsViewModel::instance->contactAdded += ref new ContactAdded([this](Contact^ contact) {
@@ -174,6 +139,43 @@ SmartPanel::SmartPanel()
     selectMenu(MenuOpen::CONTACTS_LIST);
 }
 
+void
+SmartPanel::OnstateChange(Platform::String ^callId, RingClientUWP::CallStatus state, int code)
+{
+    auto item = SmartPanelItemsViewModel::instance->findItem(callId);
+
+    if (!item) {
+        WNG_("item not found");
+        return;
+    }
+
+    switch (state) {
+    case CallStatus::NONE:
+    case CallStatus::ENDED:
+    {
+        auto callsList = DRing::getCallList();
+            if (callsList.empty())
+                _settingsMenuButton_->Visibility = VIS::Visible;
+        break;
+    }
+    case CallStatus::IN_PROGRESS:
+    {
+        SmartPanelItemsViewModel::instance->_selectedItem = item;
+        summonVideoPage();
+        break;
+    }
+    case CallStatus::PEER_PAUSED:
+    case CallStatus::PAUSED:
+    {
+        SmartPanelItemsViewModel::instance->_selectedItem = item;
+        summonVideoPage();
+        break;
+    }
+    default:
+        break;
+    }
+}
+
 void
 RingClientUWP::Views::SmartPanel::updatePageContent()
 {
diff --git a/SmartPanel.xaml.h b/SmartPanel.xaml.h
index deecd396a081f995f24106a3ef2f4edbcc1c05c3..437631b842f251befcc7a0ddeecfad132a32b10b 100644
--- a/SmartPanel.xaml.h
+++ b/SmartPanel.xaml.h
@@ -157,6 +157,7 @@ private:
     void checkStateEditionMenu();
     void ringTxtBxPlaceHolderDelay(String^ placeHolderText, int delayInMilliSeconds);
     void showLinkThisDeviceStep1();
+    void OnstateChange(Platform::String ^callId, RingClientUWP::CallStatus state, int code);
 
     /* members */
     void _addDevice__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);