diff --git a/src/handlers/xdgurl.cpp b/src/handlers/xdgurl.cpp
index e5323b272a0131ce30861f5ce3193e631b53d2a2..db744f361f7e55940728dad41915806c4ccb0a6a 100644
--- a/src/handlers/xdgurl.cpp
+++ b/src/handlers/xdgurl.cpp
@@ -18,49 +18,63 @@ namespace Handlers {
 XdgUrl::XdgUrl(const QString &xdgUrl, Core::Config *config, Core::Network *network, QObject *parent) :
     QObject(parent), _xdgUrl(xdgUrl), _config(config), _network(network)
 {
-    _metadata = _parse();
-    _destinations = _loadDestinations();
+    _parse();
+    _loadDestinations();
 
     connect(_network, &Core::Network::finished, this, &XdgUrl::_downloaded);
 }
 
-QJsonObject XdgUrl::_parse()
+void XdgUrl::_parse()
 {
     QUrl url(_xdgUrl);
     QUrlQuery query(url);
-    QJsonObject metadata;
 
-    metadata["scheme"] = QString("xdg");
-    metadata["command"] = QString("download");
-    metadata["url"] = QString("");
-    metadata["type"] = QString("downloads");
-    metadata["filename"] = QString("");
+    _metadata["scheme"] = QString("xdg");
+    _metadata["command"] = QString("download");
+    _metadata["url"] = QString("");
+    _metadata["type"] = QString("downloads");
+    _metadata["filename"] = QString("");
 
     if (!url.scheme().isEmpty()) {
-        metadata["scheme"] = url.scheme();
+        _metadata["scheme"] = url.scheme();
     }
 
     if (!url.host().isEmpty()) {
-        metadata["command"] = url.host();
+        _metadata["command"] = url.host();
     }
 
     if (query.hasQueryItem("url") && !query.queryItemValue("url").isEmpty()) {
-        metadata["url"] = query.queryItemValue("url", QUrl::FullyDecoded);
+        _metadata["url"] = query.queryItemValue("url", QUrl::FullyDecoded);
     }
 
     if (query.hasQueryItem("type") && !query.queryItemValue("type").isEmpty()) {
-        metadata["type"] = query.queryItemValue("type", QUrl::FullyDecoded);
+        _metadata["type"] = query.queryItemValue("type", QUrl::FullyDecoded);
     }
 
     if (query.hasQueryItem("filename") && !query.queryItemValue("filename").isEmpty()) {
-        metadata["filename"] = QUrl(query.queryItemValue("filename", QUrl::FullyDecoded)).fileName();
+        _metadata["filename"] = QUrl(query.queryItemValue("filename", QUrl::FullyDecoded)).fileName();
     }
 
-    if (!metadata["url"].toString().isEmpty() && metadata["filename"].toString().isEmpty()) {
-        metadata["filename"] = QUrl(metadata["url"].toString()).fileName();
+    if (!_metadata["url"].toString().isEmpty() && _metadata["filename"].toString().isEmpty()) {
+        _metadata["filename"] = QUrl(_metadata["url"].toString()).fileName();
     }
+}
 
-    return metadata;
+void XdgUrl::_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 XdgUrl::_convertPathString(const QString &path)
@@ -80,26 +94,6 @@ QString XdgUrl::_convertPathString(const QString &path)
     return newPath;
 }
 
-QJsonObject XdgUrl::_loadDestinations()
-{
-    QJsonObject destinations;
-    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);
-        }
-    }
-
-    return destinations;
-}
-
 void XdgUrl::_saveDownloadedFile(QNetworkReply *reply)
 {
     QJsonObject result;
diff --git a/src/handlers/xdgurl.h b/src/handlers/xdgurl.h
index e4f07934469614cae6532bae428153c1075ab7a6..e0478e0675964dbf63850ea342c022c904241aa2 100644
--- a/src/handlers/xdgurl.h
+++ b/src/handlers/xdgurl.h
@@ -29,9 +29,9 @@ public:
     explicit XdgUrl(const QString &xdgUrl, Core::Config *config, Core::Network *network, QObject *parent = 0);
 
 private:
-    QJsonObject _parse();
+    void _parse();
+    void _loadDestinations();
     QString _convertPathString(const QString &path);
-    QJsonObject _loadDestinations();
     void _saveDownloadedFile(QNetworkReply *reply);
     void _installDownloadedFile(QNetworkReply *reply);