diff --git a/MainPage.xaml b/MainPage.xaml
index d803ef701cfcc1e98c8cbc7a346a6ff01be8ff9d..40fcbd1f868c2366457916711306e75736755eab 100644
--- a/MainPage.xaml
+++ b/MainPage.xaml
@@ -51,18 +51,38 @@
                         Width="auto"
                         Height="auto">
             </Rectangle>
-            <Canvas  Canvas.ZIndex="6">
+            <TextBlock  x:Name="_loadingStatus_"
+                        Foreground="Red"
+                        Canvas.ZIndex="7"
+                        HorizontalAlignment="Center"
+                        VerticalAlignment="Center"
+                        Text="[LOADING STATE]">
+                <TextBlock.RenderTransform>
+                    <TranslateTransform X="0" Y="100"/>
+                </TextBlock.RenderTransform>
+            </TextBlock>
+            <Canvas  Canvas.ZIndex="6"
+                     HorizontalAlignment="Center"
+                     VerticalAlignment="Center">
                 <Image  x:Name="_loadingImage_"
                         Source="Assets/SplashScreen.scale-200.png"
                         Width="620"
-                        Height="300"/>
+                        Height="300">
+                    <Image.RenderTransform>
+                        <TranslateTransform X="-310" Y="-150"/>
+                    </Image.RenderTransform>
+                </Image>
                 <ProgressRing   x:Name="_splashProgressRing_"
                                 Foreground="#19a0b7"
                                 IsActive="True"
                                 MaxWidth="200"
                                 MaxHeight="200"
-                                Width="118"
-                                Height="118"/>
+                                Width="136"
+                                Height="136">
+                    <ProgressRing.RenderTransform>
+                        <TranslateTransform X="-166" Y="-68"/>
+                    </ProgressRing.RenderTransform>
+                </ProgressRing>
             </Canvas>
         </Grid>
         <SplitView x:Name="_outerSplitView_"
diff --git a/MainPage.xaml.cpp b/MainPage.xaml.cpp
index 99e016d9dd19d7df66b72a853e3447b42bb1b5cc..52e093f07c80325926b02c14388687545def322e 100644
--- a/MainPage.xaml.cpp
+++ b/MainPage.xaml.cpp
@@ -95,6 +95,13 @@ MainPage::MainPage()
     RingD::instance->registrationStateErrorGeneric += ref new RingClientUWP::RegistrationStateErrorGeneric(this, &RingClientUWP::MainPage::OnregistrationStateErrorGeneric);
     RingD::instance->registrationStateRegistered += ref new RingClientUWP::RegistrationStateRegistered(this, &RingClientUWP::MainPage::OnregistrationStateRegistered);
     RingD::instance->callPlaced += ref new RingClientUWP::CallPlaced(this, &RingClientUWP::MainPage::OncallPlaced);
+
+    RingD::instance->setLoadingStatusText += ref new SetLoadingStatusText([this](String^ statusText, String^ color){
+        _loadingStatus_->Text = statusText;
+        auto col = Utils::ColorFromString(color);
+        auto brush = ref new Windows::UI::Xaml::Media::SolidColorBrush(col);
+        _loadingStatus_->Foreground = brush;
+    });
 }
 
 void
@@ -158,17 +165,6 @@ RingClientUWP::MainPage::showLoadingOverlay(bool load, bool modal)
             _loadingOverlayRect_->Fill = whiteBrush;
             _loadingOverlayRect_->Opacity = 1.0;
         }
-        TimeSpan delay;
-        delay.Duration = 10000 * 50;
-        ThreadPoolTimer^ delayTimer = ThreadPoolTimer::CreateTimer(
-                                          ref new TimerElapsedHandler([this](ThreadPoolTimer^ source)
-        {
-            Dispatcher->RunAsync(CoreDispatcherPriority::High,
-                                 ref new DispatchedHandler([this]()
-            {
-                OnResize(nullptr, nullptr);
-            }));
-        }), delay);
     }
     else if (!load && isLoading) {
         isLoading = false;
@@ -176,44 +172,9 @@ RingClientUWP::MainPage::showLoadingOverlay(bool load, bool modal)
     }
 }
 
-void
-RingClientUWP::MainPage::PositionImage()
-{
-    bounds = ApplicationView::GetForCurrentView()->VisibleBounds;
-
-    auto img = ref new Image();
-    auto bitmapImage = ref new Windows::UI::Xaml::Media::Imaging::BitmapImage();
-    Windows::Foundation::Uri^ uri;
-
-    _loadingImage_->SetValue(Canvas::LeftProperty, bounds.Width * 0.5 - _loadingImage_->Width * 0.5);
-    _loadingImage_->SetValue(Canvas::TopProperty, bounds.Height * 0.5 - _loadingImage_->Height * 0.5);
-}
-
-void
-RingClientUWP::MainPage::PositionRing()
-{
-    double left;
-    double top;
-
-    _splashProgressRing_->Width = 144;
-    _splashProgressRing_->Height = 144;
-
-    left = bounds.Width * 0.5 - _loadingImage_->Width * 0.5 + 139;
-    top = bounds.Height * 0.5 - _loadingImage_->Height * 0.5 + 78;
-
-    _splashProgressRing_->SetValue(Canvas::LeftProperty, left);
-    _splashProgressRing_->SetValue(Canvas::TopProperty, top);
-}
-
 void
 RingClientUWP::MainPage::OnResize(Platform::Object^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ e)
 {
-    Dispatcher->RunAsync(CoreDispatcherPriority::High,
-                         ref new DispatchedHandler([this]()
-    {
-        PositionImage();
-        PositionRing();
-    }));
 }
 
 void
diff --git a/MainPage.xaml.h b/MainPage.xaml.h
index 5abe2b28071a14750dffa658df1a9267e28b59dc..f04bc26c6ec771dc0759b85b4fa1595e0ee12a3f 100644
--- a/MainPage.xaml.h
+++ b/MainPage.xaml.h
@@ -44,8 +44,6 @@ protected:
     virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
     virtual void OnKeyDown(KeyRoutedEventArgs^ e) override;
 
-    void PositionImage();
-    void PositionRing();
     void OnResize(Platform::Object^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ e);
 
 private:
diff --git a/RingD.cpp b/RingD.cpp
index b0ce153ffbe84d9b9ac86d25a663cbc77290c89a..0f9563f1bb64df400703d71fc46e230f26d9e19a 100644
--- a/RingD.cpp
+++ b/RingD.cpp
@@ -452,7 +452,7 @@ RingD::registerCallbacks()
             if (state3 == CallStatus::OUTGOING_RINGING ||
                     state3 == CallStatus::INCOMING_RINGING) {
                 try {
-                    Configuration::UserPreferences::instance->sendVCard(callId);
+                    //Configuration::UserPreferences::instance->sendVCard(callId);
                 }
                 catch (Exception^ e) {
                     EXC_(e);
@@ -539,6 +539,13 @@ RingD::registerCallbacks()
                         dynamic_cast<RingClientUWP::MainPage^>(frame->Content)->showLoadingOverlay(false, false);
                         editModeOn_ = false;
                     }*/
+                    setLoadingStatusText("Registration successful", "#ff00ff00");
+                }));
+            }
+            else if (state == DRing::Account::States::TRYING) {
+                CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
+                    ref new DispatchedHandler([=]() {
+                    setLoadingStatusText("Attempting to register account...", "#ff00f0f0");
                 }));
             }
             else if (state == DRing::Account::States::ERROR_GENERIC
@@ -555,6 +562,7 @@ RingD::registerCallbacks()
                 ref new DispatchedHandler([=]() {
                     reloadAccountList();
                     registrationStateErrorGeneric(account_id);
+                    setLoadingStatusText(Utils::toPlatformString("Failed to register account: " + state), "#ffff0000");
                     // ajoute cet event dans le wizard
                 }));
             }
@@ -572,13 +580,16 @@ RingD::registerCallbacks()
                 }*/
             }));
         }),
-        DRing::exportable_callback<DRing::Debug::MessageSend>([&](const std::string& toto)
+        DRing::exportable_callback<DRing::Debug::MessageSend>([&](const std::string& msg)
         {
-            if (debugModeOn_)
+            if (debugModeOn_) {
                 dispatcher->RunAsync(CoreDispatcherPriority::High,
-                ref new DispatchedHandler([=]() {
-                DMSG_(toto);
-            }));
+                    ref new DispatchedHandler([=]() {
+                    std::string displayMsg = msg.substr(56);
+                    setLoadingStatusText(Utils::toPlatformString(displayMsg.substr(0,40) + "..."), "#ff000000");
+                    DMSG_(msg);
+                }));
+            }
         })
     };
     registerCallHandlers(callHandlers);
diff --git a/RingD.h b/RingD.h
index e5a2e3b5d08d874a96ae52b403e502ce567f37ce..e47ce0aa2b287de024189bce1a385dc1949de422 100644
--- a/RingD.h
+++ b/RingD.h
@@ -42,6 +42,7 @@ delegate void RegisteredNameFound(LookupStatus status, const std::string& addres
 delegate void FinishCaptureDeviceEnumeration();
 delegate void RegistrationStateErrorGeneric(const std::string& accountId);
 delegate void RegistrationStateRegistered();
+delegate void SetLoadingStatusText(String^ statusText, String^ color);
 delegate void CallsListRecieved(const std::vector<std::string>& callsList);
 delegate void AudioMuted(const std::string& callId, bool state);
 
@@ -156,6 +157,7 @@ internal:
     event FinishCaptureDeviceEnumeration^ finishCaptureDeviceEnumeration;
     event RegistrationStateErrorGeneric^ registrationStateErrorGeneric;
     event RegistrationStateRegistered^ registrationStateRegistered;
+    event SetLoadingStatusText^ setLoadingStatusText;
     event CallsListRecieved^ callsListRecieved; // est implemente a la base pour regler le probleme du boutton d'appel qui est present lorsqu'un appel est en cours, mais il n'est pas utilise. Voir si ca peut servir a autre chose
     event AudioMuted^ audioMuted;
 
diff --git a/Utils.h b/Utils.h
index b94ff7346fa22137197d19df2fbb9049c2f7c883..d5962b3a416c24a24409353f61af1c7fff062c2a 100644
--- a/Utils.h
+++ b/Utils.h
@@ -276,6 +276,15 @@ genID(long long lower, long long upper)
     return o.str();
 }
 
+Windows::UI::Color
+ColorFromString(String^ s)
+{
+    int a,r,g,b;
+    if (sscanf_s(Utils::toString(s).c_str(), "#%2x%2x%2x%2x", &a, &r, &g, &b) == 4)
+        return Windows::UI::ColorHelper::FromArgb(a, r, g, b);
+    else
+        return Windows::UI::ColorHelper::FromArgb(255, 0, 0, 0);
+}
 
 } /*namespace Utils*/
 } /*namespace RingClientUWP*/
\ No newline at end of file