diff --git a/RingD.cpp b/RingD.cpp
index 29822eeb13b0c2e560035e6c965ecc8e4862e87e..68bac893a92553e125d7f284c0077ec8a866e3a5 100644
--- a/RingD.cpp
+++ b/RingD.cpp
@@ -1,133 +1,149 @@
-/***************************************************************************
- * Copyright (C) 2016 by Savoir-faire Linux                                *
- * Author: J�ger Nicolas <nicolas.jager@savoirfairelinux.com>              *
- * Author: Traczyk Andreas <traczyk.andreas@savoirfairelinux.com>          *
- *                                                                         *
- * This program is free software; you can redistribute it and/or modify    *
- * it under the terms of the GNU General Public License as published by    *
- * the Free Software Foundation; either version 3 of the License, or       *
- * (at your option) any later version.                                     *
- *                                                                         *
- * This program is distributed in the hope that it will be useful,         *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
- * GNU General Public License for more details.                            *
- *                                                                         *
- * You should have received a copy of the GNU General Public License       *
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
- **************************************************************************/
-#include "pch.h"
-
-/* daemon */
-#include <dring.h>
-#include "callmanager_interface.h"
-#include "configurationmanager_interface.h"
-#include "presencemanager_interface.h"
-#include "fileutils.h"
-
-#include "account_schema.h"
-
-using namespace Windows::ApplicationModel::Core;
-using namespace Windows::Storage;
-using namespace Windows::UI::Core;
-
-using namespace RingClientUWP;
-
-void
-DebugOutputWrapper(const std::string& str)
-{
-    MSG_(str);
-}
-
-void
-RingClientUWP::RingD::startDaemon()
-{
-    create_task([&]()
-    {
-        using SharedCallback = std::shared_ptr<DRing::CallbackWrapperBase>;
-        using namespace std::placeholders;
-
-        std::map<std::string, SharedCallback> callHandlers = {
-            // use IncomingCall only to register the call client sided, use StateChange to determine the impact on the UI
-            DRing::exportable_callback<DRing::CallSignal::IncomingCall>([this](
-                const std::string& accountId,
-                const std::string& callId,
-                const std::string& from)
-            {
-                MSG_("<IncomingCall>");
-                MSG_("accountId = " + accountId);
-                MSG_("callId = " + callId);
-                MSG_("from = " + from);
-            }),
-            DRing::exportable_callback<DRing::CallSignal::StateChange>([this](
-                const std::string& callId,
-                const std::string& state,
-                int code)
-            {
-                MSG_("<StateChange>");
-                MSG_("callId = " + callId);
-                MSG_("state = " + state);
-                MSG_("code = " + std::to_string(code));
-            }),
-            DRing::exportable_callback<DRing::ConfigurationSignal::IncomingAccountMessage>([this](
-                const std::string& accountId,
-                const std::string& from,
-                const std::map<std::string, std::string>& payloads)
-            {
-                MSG_("<IncomingAccountMessage>");
-                MSG_("accountId = " + accountId);
-                MSG_("from = " + from);
-
-                for (auto i : payloads) {
-                    MSG_("payload = " + i.second);
-                    auto payload = Utils::toPlatformString(i.second);
-                }
-            })
-        };
-
-        registerCallHandlers(callHandlers);
-
-        std::map<std::string, SharedCallback> dringDebugOutHandler;
-        dringDebugOutHandler.insert(DRing::exportable_callback<DRing::Debug::MessageSend>
-                             (std::bind(&DebugOutputWrapper, _1)));
-        registerCallHandlers(dringDebugOutHandler);
-
-        std::map<std::string, SharedCallback> getAppPathHandler =
-        {
-            DRing::exportable_callback<DRing::ConfigurationSignal::GetAppDataPath>
-            ([this](std::vector<std::string>* paths){
-                paths->emplace_back(localFolder_);
-            })
-        };
-        registerCallHandlers(getAppPathHandler);
-
-        DRing::init(static_cast<DRing::InitFlag>(DRing::DRING_FLAG_CONSOLE_LOG |
-            DRing::DRING_FLAG_DEBUG |
-            DRing::DRING_FLAG_AUTOANSWER));
-
-        if (!DRing::start()) {
-            ERR_("\ndaemon didn't start.\n");
-            return;
-        }
-        else {
-            if (!hasConfig)
-            {
-                std::map<std::string, std::string> test_details;
-                test_details.insert(std::make_pair(ring::Conf::CONFIG_ACCOUNT_ALIAS, accountName));
-                test_details.insert(std::make_pair(ring::Conf::CONFIG_ACCOUNT_TYPE,"RING"));
-                DRing::addAccount(test_details);
-            }
-            // if there is no config, create a default RING account
-            while (true) {
-                DRing::pollEvents();
-                Sleep(1000);
-            }
-            DRing::fini();
-        }
-    });
-}
-
-RingClientUWP::RingD::RingD()
-{
-    localFolder_ = Utils::toString(ApplicationData::Current->LocalFolder->Path);
-}
+/***************************************************************************
+* Copyright (C) 2016 by Savoir-faire Linux                                *
+* Author: J�ger Nicolas <nicolas.jager@savoirfairelinux.com>              *
+* Author: Traczyk Andreas <traczyk.andreas@savoirfairelinux.com>          *
+*                                                                         *
+* This program is free software; you can redistribute it and/or modify    *
+* it under the terms of the GNU General Public License as published by    *
+* the Free Software Foundation; either version 3 of the License, or       *
+* (at your option) any later version.                                     *
+*                                                                         *
+* This program is distributed in the hope that it will be useful,         *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
+* GNU General Public License for more details.                            *
+*                                                                         *
+* You should have received a copy of the GNU General Public License       *
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+**************************************************************************/
+#include "pch.h"
+
+/* daemon */
+#include <dring.h>
+#include "callmanager_interface.h"
+#include "configurationmanager_interface.h"
+#include "presencemanager_interface.h"
+#include "fileutils.h"
+
+#include "account_schema.h"
+
+using namespace Windows::ApplicationModel::Core;
+using namespace Windows::Storage;
+using namespace Windows::UI::Core;
+
+using namespace RingClientUWP;
+
+CoreDispatcher^ g_dispatcher;
+bool has_config;
+
+void
+DebugOutputWrapper(const std::string& str)
+{
+    MSG_(str);
+}
+
+void
+RingClientUWP::RingD::startDaemon()
+{
+    g_dispatcher = CoreApplication::MainView->CoreWindow->Dispatcher;
+
+    Utils::fileExists(ApplicationData::Current->LocalFolder, ".config\\dring.yml")
+    .then([this](bool config_exists)
+    {
+        if (!config_exists) {
+            has_config = false;
+        }
+        else {
+            has_config = true;
+        }
+    })
+    .then([this]() {
+        create_task([&]()
+        {
+            using SharedCallback = std::shared_ptr<DRing::CallbackWrapperBase>;
+            using namespace std::placeholders;
+
+            std::map<std::string, SharedCallback> callHandlers = {
+                // use IncomingCall only to register the call client sided, use StateChange to determine the impact on the UI
+                DRing::exportable_callback<DRing::CallSignal::IncomingCall>([this](
+                    const std::string& accountId,
+                    const std::string& callId,
+                    const std::string& from)
+                {
+                    MSG_("<IncomingCall>");
+                    MSG_("accountId = " + accountId);
+                    MSG_("callId = " + callId);
+                    MSG_("from = " + from);
+                }),
+                DRing::exportable_callback<DRing::CallSignal::StateChange>([this](
+                    const std::string& callId,
+                    const std::string& state,
+                    int code)
+                {
+                    MSG_("<StateChange>");
+                    MSG_("callId = " + callId);
+                    MSG_("state = " + state);
+                    MSG_("code = " + std::to_string(code));
+                }),
+                DRing::exportable_callback<DRing::ConfigurationSignal::IncomingAccountMessage>([this](
+                    const std::string& accountId,
+                    const std::string& from,
+                    const std::map<std::string, std::string>& payloads)
+                {
+                    MSG_("<IncomingAccountMessage>");
+                    MSG_("accountId = " + accountId);
+                    MSG_("from = " + from);
+
+                    for (auto i : payloads) {
+                        MSG_("payload = " + i.second);
+                        auto payload = Utils::toPlatformString(i.second);
+                    }
+                })
+            };
+
+            registerCallHandlers(callHandlers);
+
+            std::map<std::string, SharedCallback> dringDebugOutHandler;
+            dringDebugOutHandler.insert(DRing::exportable_callback<DRing::Debug::MessageSend>
+                                        (std::bind(&DebugOutputWrapper, _1)));
+            registerCallHandlers(dringDebugOutHandler);
+
+            std::map<std::string, SharedCallback> getAppPathHandler =
+            {
+                DRing::exportable_callback<DRing::ConfigurationSignal::GetAppDataPath>
+                ([this](std::vector<std::string>* paths) {
+                    paths->emplace_back(localFolder_);
+                })
+            };
+            registerCallHandlers(getAppPathHandler);
+
+            DRing::init(static_cast<DRing::InitFlag>(DRing::DRING_FLAG_CONSOLE_LOG |
+                        DRing::DRING_FLAG_DEBUG |
+                        DRing::DRING_FLAG_AUTOANSWER));
+
+            if (!DRing::start()) {
+                ERR_("\ndaemon didn't start.\n");
+                return;
+            }
+            else {
+                // if there is no config, create a default RING account
+                if (!has_config) {
+                    std::map<std::string, std::string> test_details;
+                    test_details.insert(std::make_pair(ring::Conf::CONFIG_ACCOUNT_ALIAS, "default"));
+                    test_details.insert(std::make_pair(ring::Conf::CONFIG_ACCOUNT_TYPE, "RING"));
+                    DRing::addAccount(test_details);
+                }
+                while (true) {
+                    DRing::pollEvents();
+                    Sleep(1000);
+                }
+                DRing::fini();
+            }
+        });
+    });
+}
+
+RingClientUWP::RingD::RingD()
+{
+    localFolder_ = Utils::toString(ApplicationData::Current->LocalFolder->Path);
+}