diff --git a/app/src/websockets/websocketserver.cpp b/app/src/websockets/websocketserver.cpp
index e07185aac2a4a929f47e3381e330ff4a8cf4fd85..8fae98925917621b63db8e9f3271190af47c2353 100644
--- a/app/src/websockets/websocketserver.cpp
+++ b/app/src/websockets/websocketserver.cpp
@@ -86,7 +86,7 @@ void WebSocketServer::wsTextMessageReceived(const QString &message)
     if (wsClient) {
         qtlib::Json json(message.toUtf8());
         if (json.isValid()) {
-            callFunction(json.toObject(), wsClient);
+            execRequest(json.toObject());
         }
     }
 }
@@ -97,145 +97,141 @@ void WebSocketServer::wsBinaryMessageReceived(const QByteArray &message)
     if (wsClient) {
         qtlib::Json json(message);
         if (json.isValid()) {
-            callFunction(json.toObject(), wsClient);
+            execRequest(json.toObject());
         }
     }
 }
 
-void WebSocketServer::callFunction(const QJsonObject &request, QWebSocket *wsClient)
+void WebSocketServer::execRequest(const QJsonObject &request)
 {
     /* request object format
     {
         "id": "example",
-        "call": "functionName",
+        "func": "functionName",
         "arg": ["value", 2, true]
     }
     */
+
     QString id = request["id"].toString();
-    QString call = request["call"].toString();
+    QString func = request["func"].toString();
     QJsonArray arg = request["arg"].toArray();
 
-    /* response object format
-    {
-        "id": "example",
-        "result": {}
-    }
-    */
     QJsonObject response;
     response["id"] = id;
+    response["func"] = func;
 
     // WebSocketServer
-    if (call == "WebSocketServer::stop") {
+    if (func == "WebSocketServer::stop") {
         stop();
         return;
     }
-    else if (call == "WebSocketServer::isError") {
+    else if (func == "WebSocketServer::isError") {
         response["result"] = isError();
     }
-    else if (call == "WebSocketServer::errorString") {
+    else if (func == "WebSocketServer::errorString") {
         response["result"] = errorString();
     }
-    else if (call == "WebSocketServer::serverUrl") {
+    else if (func == "WebSocketServer::serverUrl") {
         response["result"] = serverUrl().toString();
     }
     // ConfigHandler
-    else if (call == "ConfigHandler::getAppConfigApplication") {
+    else if (func == "ConfigHandler::getAppConfigApplication") {
         response["result"] = configHandler_->getAppConfigApplication();
     }
-    else if (call == "ConfigHandler::getAppConfigInstallTypes") {
+    else if (func == "ConfigHandler::getAppConfigInstallTypes") {
         response["result"] = configHandler_->getAppConfigInstallTypes();
     }
-    else if (call == "ConfigHandler::getUsrConfigApplication") {
+    else if (func == "ConfigHandler::getUsrConfigApplication") {
         response["result"] = configHandler_->getUsrConfigApplication();
     }
-    else if (call == "ConfigHandler::setUsrConfigApplication") {
+    else if (func == "ConfigHandler::setUsrConfigApplication") {
         response["result"] = configHandler_->setUsrConfigApplication(arg[0].toObject());
     }
-    else if (call == "ConfigHandler::getUsrConfigProviders") {
+    else if (func == "ConfigHandler::getUsrConfigProviders") {
         response["result"] = configHandler_->getUsrConfigProviders();
     }
-    else if (call == "ConfigHandler::setUsrConfigProviders") {
+    else if (func == "ConfigHandler::setUsrConfigProviders") {
         response["result"] = configHandler_->setUsrConfigProviders(arg[0].toObject());
     }
-    else if (call == "ConfigHandler::getUsrConfigCategories") {
+    else if (func == "ConfigHandler::getUsrConfigCategories") {
         response["result"] = configHandler_->getUsrConfigCategories();
     }
-    else if (call == "ConfigHandler::setUsrConfigCategories") {
+    else if (func == "ConfigHandler::setUsrConfigCategories") {
         response["result"] = configHandler_->setUsrConfigCategories(arg[0].toObject());
     }
-    else if (call == "ConfigHandler::getUsrConfigInstalledItems") {
+    else if (func == "ConfigHandler::getUsrConfigInstalledItems") {
         response["result"] = configHandler_->getUsrConfigInstalledItems();
     }
-    else if (call == "ConfigHandler::setUsrConfigInstalledItems") {
+    else if (func == "ConfigHandler::setUsrConfigInstalledItems") {
         response["result"] = configHandler_->setUsrConfigInstalledItems(arg[0].toObject());
     }
-    else if (call == "ConfigHandler::setUsrConfigProvidersProvider") {
+    else if (func == "ConfigHandler::setUsrConfigProvidersProvider") {
         response["result"] = configHandler_->setUsrConfigProvidersProvider(arg[0].toString(), arg[1].toObject());
     }
-    else if (call == "ConfigHandler::removeUsrConfigProvidersProvider") {
+    else if (func == "ConfigHandler::removeUsrConfigProvidersProvider") {
         response["result"] = configHandler_->removeUsrConfigProvidersProvider(arg[0].toString());
     }
-    else if (call == "ConfigHandler::setUsrConfigCategoriesProvider") {
+    else if (func == "ConfigHandler::setUsrConfigCategoriesProvider") {
         response["result"] = configHandler_->setUsrConfigCategoriesProvider(arg[0].toString(), arg[1].toObject());
     }
-    else if (call == "ConfigHandler::removeUsrConfigCategoriesProvider") {
+    else if (func == "ConfigHandler::removeUsrConfigCategoriesProvider") {
         response["result"] = configHandler_->removeUsrConfigCategoriesProvider(arg[0].toString());
     }
-    else if (call == "ConfigHandler::setUsrConfigCategoriesInstallType") {
+    else if (func == "ConfigHandler::setUsrConfigCategoriesInstallType") {
         response["result"] = configHandler_->setUsrConfigCategoriesInstallType(arg[0].toString(), arg[1].toString(), arg[2].toString());
     }
-    else if (call == "ConfigHandler::setUsrConfigInstalledItemsItem") {
+    else if (func == "ConfigHandler::setUsrConfigInstalledItemsItem") {
         response["result"] = configHandler_->setUsrConfigInstalledItemsItem(arg[0].toString(), arg[1].toObject());
     }
-    else if (call == "ConfigHandler::removeUsrConfigInstalledItemsItem") {
+    else if (func == "ConfigHandler::removeUsrConfigInstalledItemsItem") {
         response["result"] = configHandler_->removeUsrConfigInstalledItemsItem(arg[0].toString());
     }
     // SystemHandler
-    else if (call == "SystemHandler::isUnix") {
+    else if (func == "SystemHandler::isUnix") {
         response["result"] = systemHandler_->isUnix();
     }
-    else if (call == "SystemHandler::desktopEnvironment") {
+    else if (func == "SystemHandler::desktopEnvironment") {
         response["result"] = systemHandler_->desktopEnvironment();
     }
-    else if (call == "SystemHandler::isApplicableType") {
+    else if (func == "SystemHandler::isApplicableType") {
         response["result"] = systemHandler_->isApplicableType(arg[0].toString());
     }
-    else if (call == "SystemHandler::applyFile") {
+    else if (func == "SystemHandler::applyFile") {
         response["result"] = false;
 #ifdef QTLIB_UNIX
         response["result"] = systemHandler_->applyFile(arg[0].toString(), arg[1].toString());
 #endif
     }
     // OcsHandler
-    else if (call == "OcsHandler::addProviders") {
+    else if (func == "OcsHandler::addProviders") {
         response["result"] = ocsHandler_->addProviders(arg[0].toString());
     }
-    else if (call == "OcsHandler::removeProvider") {
+    else if (func == "OcsHandler::removeProvider") {
         response["result"] = ocsHandler_->removeProvider(arg[0].toString());
     }
-    else if (call == "OcsHandler::updateAllCategories") {
+    else if (func == "OcsHandler::updateAllCategories") {
         response["result"] = ocsHandler_->updateAllCategories(arg[0].toBool());
     }
-    else if (call == "OcsHandler::updateCategories") {
+    else if (func == "OcsHandler::updateCategories") {
         response["result"] = ocsHandler_->updateCategories(arg[0].toString(), arg[1].toBool());
     }
-    else if (call == "OcsHandler::getContents") {
+    else if (func == "OcsHandler::getContents") {
         response["result"] = ocsHandler_->getContents(arg[0].toString(), arg[1].toString(),
                 arg[2].toString(), arg[3].toString(),
                 arg[4].toString(), arg[5].toString(), arg[6].toInt(), arg[7].toInt());
     }
-    else if (call == "OcsHandler::getContent") {
+    else if (func == "OcsHandler::getContent") {
         response["result"] = ocsHandler_->getContent(arg[0].toString(), arg[1].toString());
     }
     // ItemHandler
-    else if (call == "ItemHandler::metadataSet") {
+    else if (func == "ItemHandler::metadataSet") {
         response["result"] = itemHandler_->metadataSet();
     }
-    else if (call == "ItemHandler::download") {
+    else if (func == "ItemHandler::download") {
         itemHandler_->download(arg[0].toString(), arg[1].toString(), arg[2].toString(), arg[3].toString());
         return;
     }
-    else if (call == "ItemHandler::uninstall") {
+    else if (func == "ItemHandler::uninstall") {
         itemHandler_->uninstall(arg[0].toString());
         return;
     }
@@ -244,6 +240,21 @@ void WebSocketServer::callFunction(const QJsonObject &request, QWebSocket *wsCli
         return;
     }
 
-    wsClient->sendTextMessage(QString(qtlib::Json(response).toJson()));
-    //wsClient->sendBinaryMessage(qtlib::Json(response).toJson());
+    sendResponse(response);
+}
+
+void WebSocketServer::sendResponse(const QJsonObject &response)
+{
+    /* response object format
+    {
+        "id": "example",
+        "func": "functionName",
+        "result": mixed
+    }
+    */
+
+    foreach (QWebSocket *wsClient, wsClients_) {
+        wsClient->sendTextMessage(QString(qtlib::Json(response).toJson()));
+        //wsClient->sendBinaryMessage(qtlib::Json(response).toJson());
+    }
 }
diff --git a/app/src/websockets/websocketserver.h b/app/src/websockets/websocketserver.h
index fdb33e3ba0d05c4621f2ffea146d08bf912d262a..9431ee3a731cf0d48fc7b83ee464d084c015d5b3 100644
--- a/app/src/websockets/websocketserver.h
+++ b/app/src/websockets/websocketserver.h
@@ -38,7 +38,8 @@ private slots:
     void wsBinaryMessageReceived(const QByteArray &message);
 
 private:
-    void callFunction(const QJsonObject &request, QWebSocket *wsClient);
+    void execRequest(const QJsonObject &request);
+    void sendResponse(const QJsonObject &response);
 
     ConfigHandler *configHandler_;
     SystemHandler *systemHandler_;