diff --git a/KelvinDashboardGUI/DapChainWalletsModel.cpp b/KelvinDashboardGUI/DapChainWalletsModel.cpp
index 77cc88c4edb4c67f7ced3a33b1ac2ffc3ac4ca46..1abadc1e093f711da67041f961bc0ce7accd8793 100755
--- a/KelvinDashboardGUI/DapChainWalletsModel.cpp
+++ b/KelvinDashboardGUI/DapChainWalletsModel.cpp
@@ -1,5 +1,6 @@
 #include "DapChainWalletsModel.h"
 
+
 DapChainWalletsModel::DapChainWalletsModel(QObject *parent)
 {
 
@@ -46,6 +47,9 @@ QHash<int, QByteArray> DapChainWalletsModel::roleNames() const
 
 QVariantMap DapChainWalletsModel::get(int row) const
 {
+    if (m_dapChainWallets.count() == 0) {
+        return { {"iconPath", ""}, {"name", ""}, {"address", ""}, {"balance", ""}, {"tokens", QStringList()} };
+    }
     const DapChainWallet *wallet = m_dapChainWallets.value(row);
     return { {"iconPath", wallet->getIconPath()}, {"name", wallet->getName()}, {"address", wallet->getAddress()}, {"balance", wallet->getBalance()}, {"tokens", wallet->getTokens()} };
 }
@@ -91,8 +95,12 @@ void DapChainWalletsModel::remove(int row)
 
 void DapChainWalletsModel::clear()
 {
-    if(m_dapChainWallets.count() > 0)
+    beginResetModel();
+    if(m_dapChainWallets.count() > 0) {
+        qDeleteAll(m_dapChainWallets);
         m_dapChainWallets.clear();
+    }
+    endResetModel();
 }
 
 QObject *DapChainWalletsModel::singletonProvider(QQmlEngine *engine, QJSEngine *scriptEngine)
diff --git a/KelvinDashboardGUI/DapServiceController.h b/KelvinDashboardGUI/DapServiceController.h
index d71ae869327e5f6804fa17984c97575b8c2e5663..52e6683f4b0f42d4555d7c93b176d7c40d9154c3 100755
--- a/KelvinDashboardGUI/DapServiceController.h
+++ b/KelvinDashboardGUI/DapServiceController.h
@@ -61,7 +61,7 @@ public:
     /// @param aiRowCount Number of lines displayed.
     void getNodeLogs(int aiTimeStamp, int aiRowCount) const;
 
-    void getWallets() const;
+    Q_INVOKABLE void getWallets() const;
     
     DapLogModel getLogModel() const;
     void setLogModel(const DapLogModel &dapLogModel);
diff --git a/KelvinDashboardService/DapChainDashboardService.cpp b/KelvinDashboardService/DapChainDashboardService.cpp
index d8bb54ee9a9e1d8ed5db9b12e7bd349f44b75a5b..14cb9fd65c6718bebdfbf691c56cba61d149b4e8 100755
--- a/KelvinDashboardService/DapChainDashboardService.cpp
+++ b/KelvinDashboardService/DapChainDashboardService.cpp
@@ -25,6 +25,7 @@ bool DapChainDashboardService::start()
     else
     {
         qCritical() << QString("Can't listen on %1").arg(DAP_BRAND);
+        qCritical() << m_pServer->errorString();
         return false;
     }
     return true;
@@ -68,22 +69,22 @@ QString DapChainDashboardService::sendToken(const QString &asWalletName, const Q
 
 /// Activate the main client window by double-clicking the application icon in the system tray.
 /// @param reason Type of action on the icon in the system tray.
-void DapChainDashboardService::activateClient(const QSystemTrayIcon::ActivationReason& reason)
-{
-    qInfo() << "DapChainDashboardService::activateClient()";
-    switch (reason)
-    {
-        case QSystemTrayIcon::Trigger:
-            {
-                QJsonArray arguments;
-                arguments.append(true);
-                m_pServer->notifyConnectedClients("RPCClient.activateClient", arguments);
-            }
-            break;
-        default:
-            break;
-    }
-}
+//void DapChainDashboardService::activateClient(const QSystemTrayIcon::ActivationReason& reason)
+//{
+//    qInfo() << "DapChainDashboardService::activateClient()";
+//    switch (reason)
+//    {
+//        case QSystemTrayIcon::Trigger:
+//            {
+//                QJsonArray arguments;
+//                arguments.append(true);
+//                m_pServer->notifyConnectedClients("RPCClient.activateClient", arguments);
+//            }
+//            break;
+//        default:
+//            break;
+//    }
+//}
 
 /// Shut down client.
 void DapChainDashboardService::closeClient()
@@ -96,26 +97,26 @@ void DapChainDashboardService::closeClient()
 }
 
 /// System tray initialization.
-void DapChainDashboardService::initTray()
-{
-    QSystemTrayIcon *trayIconKelvinDashboard = new QSystemTrayIcon();
-    trayIconKelvinDashboard->setIcon(QIcon(":/Resources/Icons/icon.ico"));
-    trayIconKelvinDashboard->setToolTip("KelvinDashboard");
-    QMenu * menuKelvinDashboardService = new QMenu();
-    QAction * quitAction = new QAction("Выход");
-    menuKelvinDashboardService->addAction(quitAction);
-    trayIconKelvinDashboard->setContextMenu(menuKelvinDashboardService);
-    trayIconKelvinDashboard->show();
+//void DapChainDashboardService::initTray()
+//{
+//    QSystemTrayIcon *trayIconKelvinDashboard = new QSystemTrayIcon();
+//    trayIconKelvinDashboard->setIcon(QIcon(":/Resources/Icons/icon.ico"));
+//    trayIconKelvinDashboard->setToolTip("KelvinDashboard");
+//    QMenu * menuKelvinDashboardService = new QMenu();
+//    QAction * quitAction = new QAction("Выход");
+//    menuKelvinDashboardService->addAction(quitAction);
+//    trayIconKelvinDashboard->setContextMenu(menuKelvinDashboardService);
+//    trayIconKelvinDashboard->show();
     
-    // If the "Exit" menu item is selected, then we shut down the service, 
-    // and also send a command to shut down the client.
-    connect(quitAction, &QAction::triggered, this, [=]
-    {
-        closeClient();
-    });
+//    // If the "Exit" menu item is selected, then we shut down the service,
+//    // and also send a command to shut down the client.
+//    connect(quitAction, &QAction::triggered, this, [=]
+//    {
+//        closeClient();
+//    });
     
-    // With a double click on the icon in the system tray, 
-    // we send a command to the client to activate the main window
-    connect(trayIconKelvinDashboard, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
-            this, SLOT(activateClient(QSystemTrayIcon::ActivationReason)));
-}
+//    // With a double click on the icon in the system tray,
+//    // we send a command to the client to activate the main window
+//    connect(trayIconKelvinDashboard, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
+//            this, SLOT(activateClient(QSystemTrayIcon::ActivationReason)));
+//}
diff --git a/KelvinDashboardService/DapChainDashboardService.h b/KelvinDashboardService/DapChainDashboardService.h
index f6e69b8c0d431d7813e86b2bb9bb779969c7dc17..ef26bf157f1b2cb6db66852bd416f6cc5cef2adb 100755
--- a/KelvinDashboardService/DapChainDashboardService.h
+++ b/KelvinDashboardService/DapChainDashboardService.h
@@ -13,10 +13,10 @@
 #define DAPCHAINDASHBOARDSERVICE_H
 
 #include <QObject>
-#include <QSystemTrayIcon>
-#include <QMenu>
-#include <QAction>
-#include <QApplication>
+//#include <QSystemTrayIcon>
+//#include <QMenu>
+//#include <QAction>
+#include <QCoreApplication>
 
 #include "DapRpcAbstractServer.h"
 #include "DapRpcLocalServer.h"
@@ -57,11 +57,11 @@ signals:
 public slots:
     /// Activate the main client window by double-clicking the application icon in the system tray.
     /// @param reason Type of action on the icon in the system tray.
-    void activateClient(const QSystemTrayIcon::ActivationReason& reason);
+//    void activateClient(const QSystemTrayIcon::ActivationReason& reason);
     /// Shut down client.
     void closeClient();
     /// System tray initialization.
-    void initTray();
+    //void initTray();
     /// Get node logs.
     /// @param aiTimeStamp Timestamp start reading logging.
     /// @param aiRowCount Number of lines displayed.
diff --git a/KelvinDashboardService/main.cpp b/KelvinDashboardService/main.cpp
index 9c4130e8aa6dd636ac24723797bd5b6b30df375f..82ed77b9453543136d8a8b59f6abe379ea5c6cd7 100755
--- a/KelvinDashboardService/main.cpp
+++ b/KelvinDashboardService/main.cpp
@@ -1,12 +1,17 @@
-#include <QApplication>
+#include <QCoreApplication>
 #include <QSystemSemaphore>
 #include <QSharedMemory>
+#include <QCommandLineParser>
+
+#include <unistd.h>
 
 #include "DapHalper.h"
 #include "DapChainDashboardService.h"
 #include "DapLogger.h"
 #include "DapChainLogHandler.h"
 
+void processArgs();
+
 int main(int argc, char *argv[])
 {
     // Creating a semaphore for locking external resources, as well as initializing an external resource-memory
@@ -22,8 +27,8 @@ int main(int argc, char *argv[])
     {
         return 1;
     }
-    
-    QApplication a(argc, argv);
+
+    QCoreApplication a(argc, argv);
     a.setOrganizationName("DEMLABS");
     a.setOrganizationDomain("demlabs.com");
     a.setApplicationName("KelvinDashboardService");
@@ -36,10 +41,29 @@ int main(int argc, char *argv[])
     #endif
 //#endif
     // Creating the main application object
+    processArgs();
     DapChainDashboardService service;
     service.start();
     // Initialization of the application in the system tray
-    service.initTray();
+//    service.initTray();
+
     
     return a.exec();
 }
+
+void processArgs()
+{
+#ifdef Q_OS_LINUX
+    QCommandLineParser clParser;
+    clParser.parse(QCoreApplication::arguments());
+    auto options = clParser.unknownOptionNames();
+    if (options.contains("D")) {
+        daemon(1, 0);
+    }
+    else if (options.contains("stop")) {
+        qint64 pid = QCoreApplication::applicationPid();
+        QProcess::startDetached("kill -9 " + QString::number(pid));
+        exit(0);
+    }
+#endif
+}