diff --git a/sources/awesome-widget/package/contents/ui/advanced.qml b/sources/awesome-widget/package/contents/ui/advanced.qml
index 01bcd58..1ec7ba6 100644
--- a/sources/awesome-widget/package/contents/ui/advanced.qml
+++ b/sources/awesome-widget/package/contents/ui/advanced.qml
@@ -17,7 +17,6 @@
 
 import QtQuick 2.0
 import QtQuick.Controls 1.3 as QtControls
-import QtQuick.Dialogs 1.2 as QtDialogs
 
 import org.kde.plasma.private.awesomewidget 1.0
 
@@ -372,32 +371,7 @@ Item {
             QtControls.Button {
                 width: parent.width * 3 / 5
                 text: i18n("Export configuration")
-                onClicked: saveConfigAs.open()
-            }
-
-            QtDialogs.FileDialog {
-                id: saveConfigAs
-                selectExisting: false
-                title: i18n("Export")
-                folder: awConfig.configurationDirectory()
-                onAccepted: {
-                    var status = awConfig.exportConfiguration(
-                        plasmoid.configuration,
-                        saveConfigAs.fileUrl.toString().replace("file://", ""))
-                    if (status) {
-                        messageDialog.title = i18n("Success")
-                        messageDialog.text = i18n("Please note that binary files were not copied")
-                    } else {
-                        messageDialog.title = i18n("Ooops...")
-                        messageDialog.text = i18n("Could not save configuration file")
-                    }
-                    messageDialog.open()
-                }
-            }
-
-            QtDialogs.MessageDialog {
-                id: messageDialog
-                standardButtons: QtDialogs.StandardButton.Ok
+                onClicked: awConfig.exportConfiguration(plasmoid.configuration)
             }
         }
 
@@ -410,42 +385,9 @@ Item {
             QtControls.Button {
                 width: parent.width * 3 / 5
                 text: i18n("Import configuration")
-                onClicked: openConfig.open()
-            }
-
-            QtDialogs.FileDialog {
-                id: openConfig
-                title: i18n("Import")
-                folder: awConfig.configurationDirectory()
-                onAccepted: importSelection.open()
-            }
-
-            QtDialogs.Dialog {
-                id: importSelection
-
-                Column {
-                    QtControls.CheckBox {
-                        id: importPlasmoid
-                        text: i18n("Import plasmoid settings")
-                    }
-
-                    QtControls.CheckBox {
-                        id: importExtensions
-                        text: i18n("Import extensions")
-                    }
-
-                    QtControls.CheckBox {
-                        id: importAdds
-                        text: i18n("Import additional files")
-                    }
-                }
-
-                onAccepted: {
+                onClicked: {
                     if (debug) console.debug()
-                    var importConfig = awConfig.importConfiguration(
-                        openConfig.fileUrl.toString().replace("file://", ""),
-                        importPlasmoid.checked, importExtensions.checked,
-                        importAdds.checked)
+                    var importConfig = awConfig.importConfiguration()
                     for (var key in importConfig)
                         plasmoid.configuration[key] = importConfig[key]
                 }
diff --git a/sources/awesome-widget/package/contents/ui/main.qml b/sources/awesome-widget/package/contents/ui/main.qml
index 23e9690..ec83b91 100644
--- a/sources/awesome-widget/package/contents/ui/main.qml
+++ b/sources/awesome-widget/package/contents/ui/main.qml
@@ -17,7 +17,6 @@
 
 import QtQuick 2.4
 import QtQuick.Controls 1.3 as QtControls
-import QtQuick.Dialogs 1.2 as QtDialogs
 import QtQuick.Layouts 1.1
 import org.kde.plasma.plasmoid 2.0
 import org.kde.plasma.core 2.0 as PlasmaCore
@@ -110,27 +109,6 @@ Item {
         }
     }
 
-    QtDialogs.Dialog {
-        id: tagSelector
-        title: i18n("Select tag")
-
-        QtControls.ComboBox {
-            id: tagSelectorBox
-            width: parent.width
-            editable: true
-        }
-
-        onAccepted: {
-            var tag = tagSelectorBox.editText
-            var message = i18n("Tag: %1", tag)
-            message += "<br>"
-            message += i18n("Value: %1", awKeys.valueByKey(tag))
-            message += "<br>"
-            message += i18n("Info: %1", awKeys.infoByKey(tag))
-            awActions.sendNotification("tag", message)
-        }
-    }
-
 
     Component.onCompleted: {
         if (debug) console.debug()
@@ -216,7 +194,12 @@ Item {
     function action_requestKey() {
         if (debug) console.debug()
 
-        tagSelectorBox.model = awKeys.dictKeys(true)
-        return tagSelector.open()
+        var tag = awKeys.graphicalKey()
+        var message = i18n("Tag: %1", tag)
+        message += "<br>"
+        message += i18n("Value: %1", awKeys.valueByKey(tag))
+        message += "<br>"
+        message += i18n("Info: %1", awKeys.infoByKey(tag))
+        awActions.sendNotification("tag", message)
     }
 }
diff --git a/sources/awesome-widget/plugin/awconfighelper.cpp b/sources/awesome-widget/plugin/awconfighelper.cpp
index 6263b30..5f61d2a 100644
--- a/sources/awesome-widget/plugin/awconfighelper.cpp
+++ b/sources/awesome-widget/plugin/awconfighelper.cpp
@@ -19,10 +19,15 @@
 
 #include <KI18n/KLocalizedString>
 
+#include <QCheckBox>
+#include <QDialogButtonBox>
 #include <QDir>
+#include <QFileDialog>
+#include <QMessageBox>
 #include <QQmlPropertyMap>
 #include <QSettings>
 #include <QTextCodec>
+#include <QVBoxLayout>
 
 #include "awdebug.h"
 
@@ -50,11 +55,13 @@ bool AWConfigHelper::dropCache() const
 }
 
 
-bool AWConfigHelper::exportConfiguration(QObject *nativeConfig,
-                                         const QString fileName) const
+void AWConfigHelper::exportConfiguration(QObject *nativeConfig) const
 {
-    qCDebug(LOG_AW) << "Selected filename" << fileName;
-
+    // get file path and init settings object
+    QString fileName = QFileDialog::getSaveFileName(nullptr, i18n("Export"));
+    if (fileName.isEmpty())
+        return;
+    qCInfo(LOG_AW) << "Selected filename" << fileName;
     QSettings settings(fileName, QSettings::IniFormat);
 
     // plasmoid configuration
@@ -96,22 +103,33 @@ bool AWConfigHelper::exportConfiguration(QObject *nativeConfig,
     // sync settings
     settings.sync();
     // show additional message
-    return settings.status() == QSettings::NoError;
+    switch (settings.status()) {
+    case QSettings::NoError:
+        QMessageBox::information(
+            nullptr, i18n("Success"),
+            i18n("Please note that binary files were not copied"));
+        break;
+    default:
+        QMessageBox::critical(nullptr, i18n("Ooops..."),
+                              i18n("Could not save configuration file"));
+        break;
+    }
 }
 
 
-QVariantMap AWConfigHelper::importConfiguration(const QString fileName,
-                                                const bool importPlasmoid,
-                                                const bool importExtensions,
-                                                const bool importAdds) const
+QVariantMap AWConfigHelper::importConfiguration() const
 {
-    qCDebug(LOG_AW) << "Selected filename" << fileName;
-
     QVariantMap configuration;
+    // get file path and init settings object
+    QString fileName = QFileDialog::getOpenFileName(nullptr, i18n("Import"));
+    if (fileName.isEmpty())
+        return configuration;
+    qCInfo(LOG_AW) << "Selected filename" << fileName;
     QSettings settings(fileName, QSettings::IniFormat);
+    QHash<QString, bool> selection = selectImport();
 
     // extensions
-    if (importExtensions) {
+    if (selection[QString("extensions")]) {
         for (auto item : m_dirs) {
             settings.beginGroup(item);
             for (auto it : settings.childGroups())
@@ -121,7 +139,7 @@ QVariantMap AWConfigHelper::importConfiguration(const QString fileName,
     }
 
     // additional files
-    if (importAdds) {
+    if (selection[QString("adds")]) {
         settings.beginGroup(QString("json"));
         // script filters
         writeFile(settings, QString("filters"),
@@ -135,7 +153,7 @@ QVariantMap AWConfigHelper::importConfiguration(const QString fileName,
     }
 
     // plasmoid configuration
-    if (importPlasmoid) {
+    if (selection[QString("plasmoid")]) {
         settings.beginGroup(QString("plasmoid"));
         for (auto key : settings.childKeys())
             configuration[key] = settings.value(key);
@@ -261,6 +279,50 @@ void AWConfigHelper::readFile(QSettings &settings, const QString key,
 }
 
 
+QHash<QString, bool> AWConfigHelper::selectImport() const
+{
+    QDialog *dialog = new QDialog(nullptr);
+    QCheckBox *importPlasmoidSettings
+        = new QCheckBox(i18n("Import plasmoid settings"), dialog);
+    importPlasmoidSettings->setChecked(true);
+    QCheckBox *importExtensionsSettings
+        = new QCheckBox(i18n("Import extensions"), dialog);
+    importExtensionsSettings->setChecked(true);
+    QCheckBox *importAddsSettings
+        = new QCheckBox(i18n("Import additional files"), dialog);
+    importAddsSettings->setChecked(true);
+    QDialogButtonBox *dialogButtons
+        = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
+                               Qt::Horizontal, dialog);
+    QVBoxLayout *layout = new QVBoxLayout(dialog);
+    layout->addWidget(importPlasmoidSettings);
+    layout->addWidget(importExtensionsSettings);
+    layout->addWidget(importAddsSettings);
+    layout->addWidget(dialogButtons);
+    connect(dialogButtons, SIGNAL(accepted()), dialog, SLOT(accept()));
+    connect(dialogButtons, SIGNAL(rejected()), dialog, SLOT(reject()));
+
+    // get parameters
+    QHash<QString, bool> import;
+    import[QString("plasmoid")] = false;
+    import[QString("extensions")] = false;
+    import[QString("adds")] = false;
+    switch (dialog->exec()) {
+    case QDialog::Accepted:
+        import[QString("plasmoid")] = importPlasmoidSettings->isChecked();
+        import[QString("extensions")] = importExtensionsSettings->isChecked();
+        import[QString("adds")] = importAddsSettings->isChecked();
+        break;
+    case QDialog::Rejected:
+    default:
+        break;
+    }
+    dialog->deleteLater();
+
+    return import;
+}
+
+
 void AWConfigHelper::writeFile(QSettings &settings, const QString key,
                                const QString fileName) const
 {
diff --git a/sources/awesome-widget/plugin/awconfighelper.h b/sources/awesome-widget/plugin/awconfighelper.h
index 912ac3d..dc51dfb 100644
--- a/sources/awesome-widget/plugin/awconfighelper.h
+++ b/sources/awesome-widget/plugin/awconfighelper.h
@@ -33,13 +33,9 @@ public:
     explicit AWConfigHelper(QObject *parent = nullptr);
     virtual ~AWConfigHelper();
     Q_INVOKABLE QString configurationDirectory() const;
     Q_INVOKABLE bool dropCache() const;
-    Q_INVOKABLE bool exportConfiguration(QObject *nativeConfig,
-                                         const QString fileName) const;
-    Q_INVOKABLE QVariantMap importConfiguration(const QString fileName,
-                                                const bool importPlasmoid,
-                                                const bool importExtensions,
-                                                const bool importAdds) const;
+    Q_INVOKABLE void exportConfiguration(QObject *nativeConfig) const;
+    Q_INVOKABLE QVariantMap importConfiguration() const;
     // dataengine
     Q_INVOKABLE QVariantMap readDataEngineConfiguration() const;
     Q_INVOKABLE void
@@ -51,6 +47,7 @@ private:
     void copySettings(QSettings &from, QSettings &to) const;
     void readFile(QSettings &settings, const QString key,
                   const QString fileName) const;
+    QHash<QString, bool> selectImport() const;
     void writeFile(QSettings &settings, const QString key,
                    const QString fileName) const;
     // properties
diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp
index e5b9861..039d24e 100644
--- a/sources/awesome-widget/plugin/awkeys.cpp
+++ b/sources/awesome-widget/plugin/awkeys.cpp
@@ -324,6 +324,14 @@ QStringList AWKeys::getHddDevices() const
 }
 
 
+#include <QInputDialog>
+QString AWKeys::graphicalKey() const
+{
+    return QInputDialog::getItem(nullptr, i18n("Select tag"), QString(),
+                                 dictKeys(true), 0, true);
+}
+
+
 QString AWKeys::infoByKey(QString key) const
 {
     qCDebug(LOG_AW) << "Requested info for key" << key;
diff --git a/sources/awesome-widget/plugin/awkeys.h b/sources/awesome-widget/plugin/awkeys.h
index a8300f1..8edc3bd 100644
--- a/sources/awesome-widget/plugin/awkeys.h
+++ b/sources/awesome-widget/plugin/awkeys.h
@@ -55,6 +55,7 @@ public:
     Q_INVOKABLE QStringList dictKeys(const bool sorted = false,
                                      const QString regexp = QString()) const;
     Q_INVOKABLE QStringList getHddDevices() const;
+    Q_INVOKABLE QString graphicalKey() const;
     // values
     Q_INVOKABLE QString infoByKey(QString key) const;
     Q_INVOKABLE QString valueByKey(QString key) const;
diff --git a/sources/awdebug.cpp b/sources/awdebug.cpp
index eee61e1..9da8dad 100644
--- a/sources/awdebug.cpp
+++ b/sources/awdebug.cpp
@@ -20,13 +20,10 @@
 #include "awdebug.h"
 
 
-Q_LOGGING_CATEGORY(LOG_AW, "org.kde.plasma.awesomewidget",
-                   QtMsgType::QtWarningMsg)
-Q_LOGGING_CATEGORY(LOG_DP, "org.kde.plasma.desktoppanel",
-                   QtMsgType::QtWarningMsg)
-Q_LOGGING_CATEGORY(LOG_ESM, "org.kde.plasma.extsysmon", QtMsgType::QtWarningMsg)
-Q_LOGGING_CATEGORY(LOG_LIB, "org.kde.plasma.awesomewidgets",
-                   QtMsgType::QtWarningMsg)
+Q_LOGGING_CATEGORY(LOG_AW, "org.kde.plasma.awesomewidget")
+Q_LOGGING_CATEGORY(LOG_DP, "org.kde.plasma.desktoppanel")
+Q_LOGGING_CATEGORY(LOG_ESM, "org.kde.plasma.extsysmon")
+Q_LOGGING_CATEGORY(LOG_LIB, "org.kde.plasma.awesomewidgets")
 
 
 const QStringList getBuildData()
diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp
index e5b9861..eb73073 100644
--- a/sources/awesome-widget/plugin/awkeys.cpp
+++ b/sources/awesome-widget/plugin/awkeys.cpp
@@ -439,4 +439,4 @@ void AWKeys::dataUpdated(const QString &sourceName,
 {
     // run concurrent data update
-    QtConcurrent::run(m_threadPool, this, &AWKeys::setDataBySource, sourceName,
+    QtConcurrent::run(this, &AWKeys::setDataBySource, sourceName,
                       data);
diff --git a/sources/libraries.cmake b/sources/libraries.cmake
index 33192f7..46e2b1e 100644
--- a/sources/libraries.cmake
+++ b/sources/libraries.cmake
@@ -2,7 +2,7 @@
 find_package(Gettext REQUIRED)
 
 # main qt libraries
-find_package(Qt5 5.4.0 REQUIRED COMPONENTS Core DBus Network Qml Widgets)
+find_package(Qt5 5.3.0 REQUIRED COMPONENTS Core DBus Network Qml Widgets)
 add_definitions(
         ${Qt5Core_DEFINITIONS} ${Qt5DBus_DEFINITIONS} ${Qt5Network_DEFINITIONS}
         ${Qt5Qml_DEFINITIONS} ${Qt5Widgets_DEFINITIONS}
