diff --git a/src/configs/application.json b/src/app/configs/application.json
similarity index 100%
rename from src/configs/application.json
rename to src/app/configs/application.json
diff --git a/src/configs/configs.qrc b/src/app/configs/configs.qrc
similarity index 100%
rename from src/configs/configs.qrc
rename to src/app/configs/configs.qrc
diff --git a/src/configs/destinations.json b/src/app/configs/destinations.json
similarity index 100%
rename from src/configs/destinations.json
rename to src/app/configs/destinations.json
diff --git a/src/configs/destinations_alias.json b/src/app/configs/destinations_alias.json
similarity index 100%
rename from src/configs/destinations_alias.json
rename to src/app/configs/destinations_alias.json
diff --git a/src/handlers/xdgurl.cpp b/src/app/handlers/xdgurl.cpp
similarity index 97%
rename from src/handlers/xdgurl.cpp
rename to src/app/handlers/xdgurl.cpp
index fd11345d5e27e47057af6b7d1c02b27d581a9d2a..db00447f74f2636fb0d223daef63f1dba684f975 100644
--- a/src/handlers/xdgurl.cpp
+++ b/src/app/handlers/xdgurl.cpp
@@ -6,10 +6,10 @@
 #include <QNetworkReply>
 #include <QDesktopServices>
 
-#include "../utils/config.h"
-#include "../utils/network.h"
-#include "../utils/file.h"
-#include "../utils/package.h"
+#include "../../libs/utils/config.h"
+#include "../../libs/utils/network.h"
+#include "../../libs/utils/file.h"
+#include "../../libs/utils/package.h"
 
 namespace handlers {
 
@@ -19,8 +19,8 @@ XdgUrl::XdgUrl(const QString &xdgUrl, utils::Config *config, utils::Network *net
     parse();
     loadDestinations();
 
-    connect(network_, &utils::Network::finished, this, &XdgUrl::downloaded);
-    connect(network_, &utils::Network::downloadProgress, this, &XdgUrl::downloadProgress);
+    connect(network_, &utils::Network::finished, this, &handlers::XdgUrl::downloaded);
+    connect(network_, &utils::Network::downloadProgress, this, &handlers::XdgUrl::downloadProgress);
 }
 
 void XdgUrl::process()
diff --git a/src/handlers/xdgurl.h b/src/app/handlers/xdgurl.h
similarity index 100%
rename from src/handlers/xdgurl.h
rename to src/app/handlers/xdgurl.h
diff --git a/src/main.cpp b/src/app/main.cpp
similarity index 96%
rename from src/main.cpp
rename to src/app/main.cpp
index 2d135434bb8cd706238fd4a264fc2c34f939da0b..30d59795b5f327874556b7090344257caf1a76a4 100644
--- a/src/main.cpp
+++ b/src/app/main.cpp
@@ -10,8 +10,9 @@
 #include <QQmlApplicationEngine>
 #include <QQmlContext>
 
-#include "utils/config.h"
-#include "utils/network.h"
+#include "../libs/utils/config.h"
+#include "../libs/utils/network.h"
+
 #include "handlers/xdgurl.h"
 
 int main(int argc, char *argv[])
diff --git a/src/qml/main.qml b/src/app/qml/main.qml
similarity index 100%
rename from src/qml/main.qml
rename to src/app/qml/main.qml
diff --git a/src/qml/qml.qrc b/src/app/qml/qml.qrc
similarity index 100%
rename from src/qml/qml.qrc
rename to src/app/qml/qml.qrc
diff --git a/src/qml/scripts/Utility.js b/src/app/qml/scripts/Utility.js
similarity index 100%
rename from src/qml/scripts/Utility.js
rename to src/app/qml/scripts/Utility.js
diff --git a/src/utils/config.cpp b/src/libs/utils/config.cpp
similarity index 100%
rename from src/utils/config.cpp
rename to src/libs/utils/config.cpp
diff --git a/src/utils/config.h b/src/libs/utils/config.h
similarity index 100%
rename from src/utils/config.h
rename to src/libs/utils/config.h
diff --git a/src/utils/file.cpp b/src/libs/utils/file.cpp
similarity index 100%
rename from src/utils/file.cpp
rename to src/libs/utils/file.cpp
diff --git a/src/utils/file.h b/src/libs/utils/file.h
similarity index 100%
rename from src/utils/file.h
rename to src/libs/utils/file.h
diff --git a/src/utils/json.cpp b/src/libs/utils/json.cpp
similarity index 100%
rename from src/utils/json.cpp
rename to src/libs/utils/json.cpp
diff --git a/src/utils/json.h b/src/libs/utils/json.h
similarity index 100%
rename from src/utils/json.h
rename to src/libs/utils/json.h
diff --git a/src/utils/network.cpp b/src/libs/utils/network.cpp
similarity index 83%
rename from src/utils/network.cpp
rename to src/libs/utils/network.cpp
index 3c4fc9694d8da2af61552615c83b49dfe54d566c..d299eed33f666fd213eb4686d1b69e667c2fbd76 100644
--- a/src/utils/network.cpp
+++ b/src/libs/utils/network.cpp
@@ -11,7 +11,7 @@ Network::Network(const bool &async, QObject *parent) :
     QObject(parent), async_(async)
 {
     manager_ = new QNetworkAccessManager(this);
-    connect(manager_, &QNetworkAccessManager::finished, this, &Network::finished);
+    connect(manager_, &QNetworkAccessManager::finished, this, &utils::Network::finished);
     if (!async_) {
         eventLoop_ = new QEventLoop();
         connect(manager_, &QNetworkAccessManager::finished, eventLoop_, &QEventLoop::quit);
@@ -38,7 +38,7 @@ QNetworkReply *Network::head(const QUrl &uri)
 QNetworkReply *Network::get(const QUrl &uri)
 {
     QNetworkReply *reply = manager_->get(QNetworkRequest(uri));
-    connect(reply, &QNetworkReply::downloadProgress, this, &Network::downloadProgress);
+    connect(reply, &QNetworkReply::downloadProgress, this, &utils::Network::downloadProgress);
     if (!async_) {
         eventLoop_->exec();
     }
diff --git a/src/utils/network.h b/src/libs/utils/network.h
similarity index 100%
rename from src/utils/network.h
rename to src/libs/utils/network.h
diff --git a/src/utils/package.cpp b/src/libs/utils/package.cpp
similarity index 100%
rename from src/utils/package.cpp
rename to src/libs/utils/package.cpp
diff --git a/src/utils/package.h b/src/libs/utils/package.h
similarity index 100%
rename from src/utils/package.h
rename to src/libs/utils/package.h
diff --git a/xdgurl.pro b/xdgurl.pro
index 2b39ba499273d29a48717b6c0f25f8b3afe3e759..518daf9646ce17945d673f7d65b7d301a29ef7f4 100644
--- a/xdgurl.pro
+++ b/xdgurl.pro
@@ -15,25 +15,25 @@ CONFIG += \
     c++11
 
 SOURCES += \
-    src/main.cpp \
-    src/handlers/xdgurl.cpp \
-    src/utils/config.cpp \
-    src/utils/network.cpp \
-    src/utils/file.cpp \
-    src/utils/json.cpp \
-    src/utils/package.cpp
+    src/app/main.cpp \
+    src/app/handlers/xdgurl.cpp \
+    src/libs/utils/config.cpp \
+    src/libs/utils/network.cpp \
+    src/libs/utils/file.cpp \
+    src/libs/utils/json.cpp \
+    src/libs/utils/package.cpp
 
 HEADERS += \
-    src/handlers/xdgurl.h \
-    src/utils/config.h \
-    src/utils/network.h \
-    src/utils/file.h \
-    src/utils/json.h \
-    src/utils/package.h
+    src/app/handlers/xdgurl.h \
+    src/libs/utils/config.h \
+    src/libs/utils/network.h \
+    src/libs/utils/file.h \
+    src/libs/utils/json.h \
+    src/libs/utils/package.h
 
 RESOURCES += \
-    src/configs/configs.qrc \
-    src/qml/qml.qrc \
+    src/app/configs/configs.qrc \
+    src/app/qml/qml.qrc \
     src/desktop/desktop.qrc
 
 # Additional RPATH