diff --git a/src/app/handlers/ocsurlhandler.cpp b/src/app/handlers/ocsurlhandler.cpp
index 547c6c528c6a7275b0924d0f88dafcf1c12bd803..52edf33322b60e796774c52281a2836ea854d9b8 100644
--- a/src/app/handlers/ocsurlhandler.cpp
+++ b/src/app/handlers/ocsurlhandler.cpp
@@ -8,11 +8,12 @@
 #include "qtlib_networkresource.h"
 #include "qtlib_package.h"
 
-OcsUrlHandler::OcsUrlHandler(const QString &ocsUrl, const qtlib::Config &config, QObject *parent)
-    : QObject(parent), ocsUrl_(ocsUrl), config_(config)
+#include "handlers/confighandler.h"
+
+OcsUrlHandler::OcsUrlHandler(const QString &ocsUrl, ConfigHandler *configHandler, QObject *parent)
+    : QObject(parent), ocsUrl_(ocsUrl), configHandler_(configHandler)
 {
     parse();
-    loadDestinations();
 }
 
 QString OcsUrlHandler::ocsUrl() const
@@ -58,7 +59,7 @@ bool OcsUrlHandler::isValid()
     if ((scheme == "ocs" || scheme == "ocss" || scheme == "xdg" || scheme == "xdgs")
             && (command == "download" || command == "install")
             && QUrl(url).isValid()
-            && destinations_.contains(type)
+            && configHandler_->getAppConfigInstallTypes().contains(type)
             && !filename.isEmpty()) {
         return true;
     }
@@ -68,7 +69,7 @@ bool OcsUrlHandler::isValid()
 void OcsUrlHandler::openDestination()
 {
     QString type = metadata_["type"].toString();
-    QDesktopServices::openUrl(QUrl("file://" + destinations_[type].toString()));
+    QDesktopServices::openUrl(QUrl("file://" + configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString()));
 }
 
 void OcsUrlHandler::networkResourceFinished(qtlib::NetworkResource *resource)
@@ -126,46 +127,12 @@ void OcsUrlHandler::parse()
     }
 }
 
-void OcsUrlHandler::loadDestinations()
-{
-    QJsonObject configDestinations = config_.get("destinations");
-    QJsonObject configDestinationsAlias = config_.get("destinations_alias");
-
-    foreach (const QString &key, configDestinations.keys()) {
-        destinations_[key] = convertPathString(configDestinations[key].toString());
-    }
-
-    foreach (const QString &key, configDestinationsAlias.keys()) {
-        QString value = configDestinationsAlias[key].toString();
-        if (destinations_.contains(value)) {
-            destinations_[key] = destinations_.value(value);
-        }
-    }
-}
-
-QString OcsUrlHandler::convertPathString(const QString &path)
-{
-    QString newPath = path;
-
-    if (newPath.contains("$HOME")) {
-        newPath.replace("$HOME", qtlib::Dir::homePath());
-    }
-    else if (newPath.contains("$XDG_DATA_HOME")) {
-        newPath.replace("$XDG_DATA_HOME", qtlib::Dir::genericDataPath());
-    }
-    else if (newPath.contains("$KDEHOME")) {
-        newPath.replace("$KDEHOME", qtlib::Dir::kdehomePath());
-    }
-
-    return newPath;
-}
-
 void OcsUrlHandler::saveDownloadedFile(qtlib::NetworkResource *resource)
 {
     QJsonObject result;
 
     QString type = metadata_["type"].toString();
-    qtlib::Dir destDir(destinations_[type].toString());
+    qtlib::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString());
     destDir.make();
     qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString());
 
@@ -200,7 +167,7 @@ void OcsUrlHandler::installDownloadedFile(qtlib::NetworkResource *resource)
 
     qtlib::Package package(tempFile.path());
     QString type = metadata_["type"].toString();
-    qtlib::Dir destDir(destinations_[type].toString());
+    qtlib::Dir destDir(configHandler_->getAppConfigInstallTypes()[type].toObject()["destination"].toString());
     destDir.make();
     qtlib::File destFile(destDir.path() + "/" + metadata_["filename"].toString());
 
diff --git a/src/app/handlers/ocsurlhandler.h b/src/app/handlers/ocsurlhandler.h
index ba56c29f535b84c8865ef44a4f2e8a50d9d9d89b..8c3f99da2d60069181862017af66386a97dfd797 100644
--- a/src/app/handlers/ocsurlhandler.h
+++ b/src/app/handlers/ocsurlhandler.h
@@ -3,18 +3,18 @@
 #include <QObject>
 #include <QJsonObject>
 
-#include "qtlib_config.h"
-
 namespace qtlib {
 class NetworkResource;
 }
 
+class ConfigHandler;
+
 class OcsUrlHandler : public QObject
 {
     Q_OBJECT
 
 public:
-    explicit OcsUrlHandler(const QString &ocsUrl, const qtlib::Config &config, QObject *parent = 0);
+    explicit OcsUrlHandler(const QString &ocsUrl, ConfigHandler *configHandler, QObject *parent = 0);
 
 signals:
     void started();
@@ -35,13 +35,10 @@ private slots:
 
 private:
     void parse();
-    void loadDestinations();
-    QString convertPathString(const QString &path);
     void saveDownloadedFile(qtlib::NetworkResource *resource);
     void installDownloadedFile(qtlib::NetworkResource *resource);
 
     QString ocsUrl_;
-    qtlib::Config config_;
+    ConfigHandler *configHandler_;
     QJsonObject metadata_;
-    QJsonObject destinations_;
 };
diff --git a/src/app/main.cpp b/src/app/main.cpp
index 91d81a3202d9d734fd17ccf78b440f4bd45032a0..1d84cb4cf09b3d173345339561a5039fc9a01290 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -8,8 +8,7 @@
 #include <QQmlApplicationEngine>
 #include <QQmlContext>
 
-#include "qtlib_config.h"
-
+#include "handlers/confighandler.h"
 #include "handlers/ocsurlhandler.h"
 
 int main(int argc, char *argv[])
@@ -17,18 +16,18 @@ int main(int argc, char *argv[])
     // Init
     QGuiApplication app(argc, argv);
 
-    qtlib::Config config(":/configs");
-    QJsonObject configApplication = config.get("application");
+    ConfigHandler *configHandler = new ConfigHandler();
+    QJsonObject appConfigApplication = configHandler->getAppConfigApplication();
 
-    app.setApplicationName(configApplication["name"].toString());
-    app.setApplicationVersion(configApplication["version"].toString());
-    app.setOrganizationName(configApplication["organization"].toString());
-    app.setOrganizationDomain(configApplication["domain"].toString());
-    app.setWindowIcon(QIcon::fromTheme(configApplication["id"].toString(), QIcon(configApplication["icon"].toString())));
+    app.setApplicationName(appConfigApplication["name"].toString());
+    app.setApplicationVersion(appConfigApplication["version"].toString());
+    app.setOrganizationName(appConfigApplication["organization"].toString());
+    app.setOrganizationDomain(appConfigApplication["domain"].toString());
+    app.setWindowIcon(QIcon::fromTheme(appConfigApplication["id"].toString(), QIcon(appConfigApplication["icon"].toString())));
 
     // Setup CLI
     QCommandLineParser clParser;
-    clParser.setApplicationDescription(configApplication["description"].toString());
+    clParser.setApplicationDescription(appConfigApplication["description"].toString());
     clParser.addHelpOption();
     clParser.addVersionOption();
     clParser.addPositionalArgument("ocsurl", "OCS-URL");
@@ -45,7 +44,9 @@ int main(int argc, char *argv[])
     // Setup QML
     QQmlApplicationEngine qmlAppEngine;
     QQmlContext *qmlContext = qmlAppEngine.rootContext();
-    qmlContext->setContextProperty("ocsUrlHandler", new OcsUrlHandler(ocsUrl, config, &qmlAppEngine));
+    configHandler->setParent(&qmlAppEngine);
+    qmlContext->setContextProperty("configHandler", configHandler);
+    qmlContext->setContextProperty("ocsUrlHandler", new OcsUrlHandler(ocsUrl, configHandler, &qmlAppEngine));
     qmlAppEngine.load(QUrl("qrc:/qml/main.qml"));
 
     return app.exec();