diff --git a/pri/install.pri b/pri/install.pri
index b1a3f84e3..e390d0610 100644
--- a/pri/install.pri
+++ b/pri/install.pri
@@ -1,52 +1,69 @@
# Setup all public headers, this needs to be kept in
# sync with truly used headers.
INSTALL_HEADERS = \
+../librssguard/3rd-party/boolinq/boolinq.h \
+../librssguard/3rd-party/mimesis/mimesis.hpp \
+../librssguard/3rd-party/mimesis/quoted-printable.hpp \
../librssguard/core/feeddownloader.h \
../librssguard/core/feedsmodel.h \
../librssguard/core/feedsproxymodel.h \
../librssguard/core/message.h \
+../librssguard/core/messagefilter.h \
../librssguard/core/messagesmodel.h \
+../librssguard/core/messagesmodelcache.cpp \
../librssguard/core/messagesmodelcache.h \
../librssguard/core/messagesmodelsqllayer.h \
../librssguard/core/messagesproxymodel.h \
../librssguard/definitions/definitions.h \
+../librssguard/dynamic-shortcuts \
+../librssguard/dynamic-shortcuts/dynamicshortcuts.cpp \
../librssguard/dynamic-shortcuts/dynamicshortcuts.h \
+../librssguard/dynamic-shortcuts/dynamicshortcutswidget.cpp \
../librssguard/dynamic-shortcuts/dynamicshortcutswidget.h \
-../librssguard/dynamic-shortcuts/shortcutbutton.h \
+../librssguard/dynamic-shortcuts/shortcutcatcher.cpp \
../librssguard/dynamic-shortcuts/shortcutcatcher.h \
../librssguard/exceptions/applicationexception.h \
+../librssguard/exceptions/filteringexception.h \
../librssguard/exceptions/ioexception.h \
../librssguard/gui/baselineedit.h \
../librssguard/gui/basetoolbar.h \
-../librssguard/gui/colorlabel.h \
+../librssguard/gui/colortoolbutton.h \
+../librssguard/gui/comboboxwithstatus.cpp \
../librssguard/gui/comboboxwithstatus.h \
../librssguard/gui/dialogs/formabout.h \
../librssguard/gui/dialogs/formaddaccount.h \
+../librssguard/gui/dialogs/formaddeditlabel.h \
../librssguard/gui/dialogs/formbackupdatabasesettings.h \
../librssguard/gui/dialogs/formdatabasecleanup.h \
../librssguard/gui/dialogs/formmain.h \
+../librssguard/gui/dialogs/formmessagefiltersmanager.h \
../librssguard/gui/dialogs/formrestoredatabasesettings.h \
../librssguard/gui/dialogs/formsettings.h \
../librssguard/gui/dialogs/formupdate.h \
-../librssguard/gui/dialogs/oauthlogin.h \
../librssguard/gui/discoverfeedsbutton.h \
../librssguard/gui/edittableview.h \
../librssguard/gui/feedmessageviewer.h \
../librssguard/gui/feedstoolbar.h \
../librssguard/gui/feedsview.h \
../librssguard/gui/guiutilities.h \
+../librssguard/gui/labelwithstatus.cpp \
../librssguard/gui/labelwithstatus.h \
+../librssguard/gui/lineeditwithstatus.cpp \
../librssguard/gui/lineeditwithstatus.h \
../librssguard/gui/locationlineedit.h \
../librssguard/gui/messagebox.h \
+../librssguard/gui/messagebrowser.h \
../librssguard/gui/messagepreviewer.h \
+../librssguard/gui/messagessearchlineedit.cpp \
../librssguard/gui/messagessearchlineedit.h \
../librssguard/gui/messagestoolbar.h \
../librssguard/gui/messagesview.h \
../librssguard/gui/messagetextbrowser.h \
../librssguard/gui/newspaperpreviewer.h \
../librssguard/gui/plaintoolbutton.h \
+../librssguard/gui/searchtextwidget.cpp \
../librssguard/gui/searchtextwidget.h \
+../librssguard/gui/searchtextwidget.ui \
../librssguard/gui/settings/settingsbrowsermail.h \
../librssguard/gui/settings/settingsdatabase.h \
../librssguard/gui/settings/settingsdownloads.h \
@@ -55,9 +72,12 @@ INSTALL_HEADERS = \
../librssguard/gui/settings/settingsgui.h \
../librssguard/gui/settings/settingslocalization.h \
../librssguard/gui/settings/settingspanel.h \
+../librssguard/gui/settings/settingsshortcuts.cpp \
../librssguard/gui/settings/settingsshortcuts.h \
+../librssguard/gui/settings/settingsshortcuts.ui \
../librssguard/gui/squeezelabel.h \
../librssguard/gui/statusbar.h \
+../librssguard/gui/styleditemdelegatewithoutfocus.cpp \
../librssguard/gui/styleditemdelegatewithoutfocus.h \
../librssguard/gui/systemtrayicon.h \
../librssguard/gui/tabbar.h \
@@ -69,13 +89,13 @@ INSTALL_HEADERS = \
../librssguard/gui/treewidget.h \
../librssguard/gui/webbrowser.h \
../librssguard/gui/webviewer.h \
+../librssguard/gui/widgetwithstatus.cpp \
../librssguard/gui/widgetwithstatus.h \
../librssguard/miscellaneous/application.h \
../librssguard/miscellaneous/autosaver.h \
../librssguard/miscellaneous/databasecleaner.h \
../librssguard/miscellaneous/databasefactory.h \
../librssguard/miscellaneous/databasequeries.h \
-../librssguard/miscellaneous/debugging.h \
../librssguard/miscellaneous/externaltool.h \
../librssguard/miscellaneous/feedreader.h \
../librssguard/miscellaneous/iconfactory.h \
@@ -88,13 +108,16 @@ INSTALL_HEADERS = \
../librssguard/miscellaneous/simplecrypt/simplecrypt.h \
../librssguard/miscellaneous/skinfactory.h \
../librssguard/miscellaneous/systemfactory.h \
+../librssguard/miscellaneous/templates.h \
../librssguard/miscellaneous/textfactory.h \
../librssguard/network-web/adblock/adblockaddsubscriptiondialog.h \
../librssguard/network-web/adblock/adblockdialog.h \
../librssguard/network-web/adblock/adblockicon.h \
../librssguard/network-web/adblock/adblockmanager.h \
+../librssguard/network-web/adblock/adblockmatcher.cpp \
../librssguard/network-web/adblock/adblockmatcher.h \
../librssguard/network-web/adblock/adblockrule.h \
+../librssguard/network-web/adblock/adblocksearchtree.cpp \
../librssguard/network-web/adblock/adblocksearchtree.h \
../librssguard/network-web/adblock/adblocksubscription.h \
../librssguard/network-web/adblock/adblocktreewidget.h \
@@ -103,11 +126,15 @@ INSTALL_HEADERS = \
../librssguard/network-web/downloader.h \
../librssguard/network-web/downloadmanager.h \
../librssguard/network-web/googlesuggest.h \
+../librssguard/network-web/httpresponse.cpp \
../librssguard/network-web/httpresponse.h \
../librssguard/network-web/networkfactory.h \
../librssguard/network-web/networkurlinterceptor.h \
+../librssguard/network-web/oauth2service.cpp \
../librssguard/network-web/oauth2service.h \
+../librssguard/network-web/oauthhttphandler.cpp \
../librssguard/network-web/oauthhttphandler.h \
+../librssguard/network-web/rssguardschemehandler.cpp \
../librssguard/network-web/rssguardschemehandler.h \
../librssguard/network-web/silentnetworkaccessmanager.h \
../librssguard/network-web/urlinterceptor.h \
@@ -117,11 +144,16 @@ INSTALL_HEADERS = \
../librssguard/qtsingleapplication/qtlockedfile.h \
../librssguard/qtsingleapplication/qtsingleapplication.h \
../librssguard/qtsingleapplication/qtsinglecoreapplication.h \
+../librssguard/services/abstract/accountcheckmodel.cpp \
../librssguard/services/abstract/accountcheckmodel.h \
+../librssguard/services/abstract/cacheforserviceroot.cpp \
../librssguard/services/abstract/cacheforserviceroot.h \
../librssguard/services/abstract/category.h \
../librssguard/services/abstract/feed.h \
../librssguard/services/abstract/gui/formfeeddetails.h \
+../librssguard/services/abstract/importantnode.h \
+../librssguard/services/abstract/label.h \
+../librssguard/services/abstract/labelsnode.h \
../librssguard/services/abstract/recyclebin.h \
../librssguard/services/abstract/rootitem.h \
../librssguard/services/abstract/serviceentrypoint.h \
@@ -130,8 +162,11 @@ INSTALL_HEADERS = \
../librssguard/services/gmail/gmailentrypoint.h \
../librssguard/services/gmail/gmailfeed.h \
../librssguard/services/gmail/gmailserviceroot.h \
+../librssguard/services/gmail/gui/emailrecipientcontrol.h \
../librssguard/services/gmail/gui/formaddeditemail.h \
+../librssguard/services/gmail/gui/formdownloadattachment.cpp \
../librssguard/services/gmail/gui/formdownloadattachment.h \
+../librssguard/services/gmail/gui/formdownloadattachment.ui \
../librssguard/services/gmail/gui/formeditgmailaccount.h \
../librssguard/services/gmail/network/gmailnetworkfactory.h \
../librssguard/services/inoreader/definitions.h \
@@ -152,6 +187,7 @@ INSTALL_HEADERS = \
../librssguard/services/standard/gui/formstandardcategorydetails.h \
../librssguard/services/standard/gui/formstandardfeeddetails.h \
../librssguard/services/standard/gui/formstandardimportexport.h \
+../librssguard/services/standard/jsonparser.h \
../librssguard/services/standard/rdfparser.h \
../librssguard/services/standard/rssparser.h \
../librssguard/services/standard/standardcategory.h \
diff --git a/resources/icons.qrc b/resources/icons.qrc
index f1dac90e4..4633dfd68 100644
--- a/resources/icons.qrc
+++ b/resources/icons.qrc
@@ -4,6 +4,7 @@
./graphics/Faenza/actions/64/back.png
./graphics/Faenza/actions/64/call-start.png
./graphics/Faenza/actions/64/dialog-no.png
+ ./graphics/Faenza/actions/64/dialog-ok.png
./graphics/Faenza/actions/64/dialog-yes.png
./graphics/Faenza/actions/64/document-edit.png
./graphics/Faenza/actions/64/document-export.png
@@ -74,6 +75,7 @@
./graphics/Numix/22/actions/back.svg
./graphics/Numix/22/actions/call-start.svg
./graphics/Numix/22/actions/dialog-no.svg
+ ./graphics/Numix/22/actions/dialog-ok.svg
./graphics/Numix/22/actions/dialog-yes.svg
./graphics/Numix/22/actions/document-edit.svg
./graphics/Numix/22/actions/document-export.svg
diff --git a/src/librssguard/gui/labelsmenu.cpp b/src/librssguard/gui/labelsmenu.cpp
new file mode 100644
index 000000000..c0c3b084a
--- /dev/null
+++ b/src/librssguard/gui/labelsmenu.cpp
@@ -0,0 +1,145 @@
+// For license of this file, see /LICENSE.md.
+
+#include "gui/labelsmenu.h"
+
+#include "3rd-party/boolinq/boolinq.h"
+#include "miscellaneous/application.h"
+#include "miscellaneous/databasequeries.h"
+#include "miscellaneous/iconfactory.h"
+
+#include
+#include
+#include
+
+LabelsMenu::LabelsMenu(const QList& messages, const QList