diff --git a/ChannelListWidget.cpp b/ChannelListWidget.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3d5b15610e301a2b1db5451b2f3c6abf1dc1435e
--- /dev/null
+++ b/ChannelListWidget.cpp
@@ -0,0 +1,56 @@
+#include "ChannelListWidget.h"
+#include <QMouseEvent>
+
+ChannelListWidget::ChannelListWidget()
+	: QTreeWidget()
+{
+	m_parent = new QWidget;
+	m_parent->setAttribute(Qt::WA_TranslucentBackground);
+	m_parent->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);
+	m_parent->setGeometry(320, 200, 1, 1);
+
+	setHeaderHidden(true);
+	setExpandsOnDoubleClick(false);
+	setStyleSheet("padding:2px;border-radius:5px;border-style:solid;border-width:1px;border-color:rgb(100,100,100); background-color:rgba(50,50,50,150); color:rgb(255,255,255);");
+	setParent(m_parent);
+
+	resize(200, 400);
+	m_parent->adjustSize();
+	m_parent->show();
+
+}
+
+ChannelListWidget::~ChannelListWidget()
+{
+	//m_parent->deleteLater();
+}
+
+void ChannelListWidget::mousePressEvent(QMouseEvent * event)
+{
+	if (event->button() == Qt::LeftButton)
+		isMouseDown = true;
+
+	QTreeWidget::mousePressEvent(event);
+}
+
+void ChannelListWidget::mouseReleaseEvent(QMouseEvent * event)
+{
+	isMouseDown = false;
+
+	QTreeWidget::mouseReleaseEvent(event);
+}
+
+void ChannelListWidget::mouseMoveEvent(QMouseEvent * event)
+{
+	if (isMouseDown)
+		m_parent->move(event->globalPos());
+
+	QTreeWidget::mouseMoveEvent(event);
+}
+
+void ChannelListWidget::resizeEvent(QResizeEvent * event)
+{
+	m_parent->adjustSize();
+
+	QTreeWidget::resizeEvent(event);
+}
\ No newline at end of file
diff --git a/ChannelListWidget.h b/ChannelListWidget.h
new file mode 100644
index 0000000000000000000000000000000000000000..917058b5ae0b1e1f1c032f72170569f011622ca5
--- /dev/null
+++ b/ChannelListWidget.h
@@ -0,0 +1,26 @@
+#pragma once
+#include <QWidget>
+#include <QPoint>
+#include <QTreeWidget>
+
+class ChannelListWidget : public QTreeWidget
+{
+	Q_OBJECT
+
+public:
+	explicit ChannelListWidget();
+	~ChannelListWidget();
+
+protected:
+	virtual void mousePressEvent(QMouseEvent * event) Q_DECL_OVERRIDE;
+	virtual void mouseReleaseEvent(QMouseEvent * event) Q_DECL_OVERRIDE;
+	virtual void mouseMoveEvent(QMouseEvent * event) Q_DECL_OVERRIDE;
+	virtual void resizeEvent(QResizeEvent * event) Q_DECL_OVERRIDE;
+
+private:
+	bool isMouseDown = false;
+	QWidget *m_parent;
+
+public:
+
+};
diff --git a/Release/x64/qtTsOverlay_x64.dll b/Release/x64/qtTsOverlay_x64.dll
index a46615c2faec9589e2e7d38f8100446e77da56f2..d7412f107431bc6c853d129accaa7c3ff2fab33c 100644
Binary files a/Release/x64/qtTsOverlay_x64.dll and b/Release/x64/qtTsOverlay_x64.dll differ
diff --git a/Release/x64/qtTsOverlay_x64.exp b/Release/x64/qtTsOverlay_x64.exp
index 31b386b95f748c030acc5b6f317af6286a527878..b186815c951c8029e0a54413840f8b53233adfe9 100644
Binary files a/Release/x64/qtTsOverlay_x64.exp and b/Release/x64/qtTsOverlay_x64.exp differ
diff --git a/Release/x64/qtTsOverlay_x64.lib b/Release/x64/qtTsOverlay_x64.lib
index 4e9a53fbdd9b2de6169ccfb0415ba531104326dd..40083ea0e4480aeef37a0e0d330c796a5ee04fa0 100644
Binary files a/Release/x64/qtTsOverlay_x64.lib and b/Release/x64/qtTsOverlay_x64.lib differ
diff --git a/overlaycontroller.cpp b/overlaycontroller.cpp
index bfebac1a9ac3678200d40f83981dd5a7cad84e50..687a83d476d64d72acfe8f711af0f44068481966 100644
--- a/overlaycontroller.cpp
+++ b/overlaycontroller.cpp
@@ -6,6 +6,7 @@
 #include <qdebug.h>
 #include "teamspeak\public_errors.h"
 
+
 //#ifndef _DEBUG
 //#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
 //#endif
@@ -41,13 +42,7 @@ OverlayController::OverlayController(const struct TS3Functions funcs, quint64 se
 
 	m_SCHID = serverConnectionHandlerID;
 
-	m_treeWidget = new QWidget;
-	m_tree = new QTreeWidget(m_treeWidget);
-	m_tree->setHeaderHidden(true);
-	m_tree->setExpandsOnDoubleClick(false);
-	m_treeWidget->setAttribute(Qt::WA_TranslucentBackground);
-	m_treeWidget->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::Tool);
-
+	m_tree = new ChannelListWidget;
 }
 
 OverlayController::~OverlayController()
@@ -61,7 +56,7 @@ OverlayController::~OverlayController()
 	m_msgLines.clear();
 
 	delete m_debugWindow;
-	delete m_treeWidget;
+	delete m_tree;
 }
 
 void OverlayController::deleteChatLine(QWidget * line)
@@ -210,7 +205,7 @@ void OverlayController::reset()
 
 void OverlayController::updateChannelList()
 {
-	if (m_treeWidget->isVisible())
+	if (m_tree->isVisible())
 		displayChannelList();
 }
 
@@ -298,6 +293,5 @@ void OverlayController::displayChannelList()
 	m_tree->expandAll();
 	connect(m_tree, &QTreeWidget::itemDoubleClicked, this, &OverlayController::treeItemClicked);
 	m_tree->adjustSize();
-	m_treeWidget->adjustSize();
-	m_treeWidget->show();
+	m_tree->show();
 }
diff --git a/overlaycontroller.h b/overlaycontroller.h
index c73dacaba471f28502d3e512fc17e510f7efc55e..68ba71ead35d5f54082087f76529b74db1e45f91 100644
--- a/overlaycontroller.h
+++ b/overlaycontroller.h
@@ -7,7 +7,7 @@
 #include <QWidget>
 #include <QVector>
 #include <QLabel>
-#include <QTreeWidget>
+#include "ChannelListWidget.h"
 
 
 #define MAXLINES 5
@@ -34,8 +34,7 @@ private:
 	QLabel* m_debugWindow;
 	QVector<QWidget*> m_speakers;
 	QVector<QWidget*> m_msgLines;
-	QTreeWidget* m_tree;
-	QWidget* m_treeWidget;
+	ChannelListWidget* m_tree;
 
 private:
 	void deleteChatLine(QWidget* line);
diff --git a/plugin.cpp b/plugin.cpp
index b07c7913c876dde9d32b1409cfda13702b67c842..6552b348fad3beac606675874228c99b859aaab3 100644
--- a/plugin.cpp
+++ b/plugin.cpp
@@ -102,8 +102,22 @@ QString channelID2Name(uint64 serverConnectionHandlerID, uint64 channelID)
 	return name;
 }
 
-OverlayController* getController(uint64 serverConnectionHandlerID)
+OverlayController* getController(uint64 serverConnectionHandlerID = 0)
 {
+	if (serverConnectionHandlerID == 0)
+	{
+		OverlayController* ret = NULL;
+		for (auto &it : g_serverList.keys())
+		{
+			int tmp;
+
+			if (ts3Functions.getClientSelfVariableAsInt(it, CLIENT_IS_MUTED, &tmp) != ERROR_ok)
+				if (tmp == 0)
+					ret = g_serverList.find(it).value();
+		}
+		return ret;
+	}
+
 	auto tmp = g_serverList.find(serverConnectionHandlerID);
 
 	if (tmp == g_serverList.end())
@@ -309,9 +323,7 @@ void ts3plugin_initHotkeys(struct PluginHotkey*** hotkeys) {
 	* The keyword will be later passed to ts3plugin_onHotkeyEvent to identify which hotkey was triggered.
 	* The description is shown in the clients hotkey dialog. */
 	BEGIN_CREATE_HOTKEYS(3);  /* Create 3 hotkeys. Size must be correct for allocating memory. */
-	CREATE_HOTKEY("keyword_1", "Test hotkey 1");
-	CREATE_HOTKEY("keyword_2", "Test hotkey 2");
-	CREATE_HOTKEY("keyword_3", "Test hotkey 3");
+	CREATE_HOTKEY("Channellist", "Displays a simple channellist of the server");
 	END_CREATE_HOTKEYS;
 
 	/* The client will call ts3plugin_freeMemory to release all allocated memory */
@@ -400,13 +412,6 @@ void ts3plugin_onClientMoveEvent(uint64 serverConnectionHandlerID, anyID clientI
 	{
 		getController(serverConnectionHandlerID)->addChatLine(QString("%1 <font size=\"-5\">connected to</font> %2").arg(ClientName).arg(newChannel));
 	}
-	else if (!ClientName.isEmpty() && !oldChannel.isEmpty() && newChannel.isEmpty())
-	{
-		if(oldChannelID == getCurrentChannel(serverConnectionHandlerID))
-			getController(serverConnectionHandlerID)->addChatLine(QString("<font color=\"#00FFFF\">%1 <font size=\"-5\">disconnected from</font> %2</font>").arg(ClientName).arg(oldChannel));
-		else
-			getController(serverConnectionHandlerID)->addChatLine(QString("%1 <font size=\"-5\">disconnected from</font> %2").arg(ClientName).arg(oldChannel));
-	}
 
 }
 
@@ -767,7 +772,9 @@ void ts3plugin_onMenuItemEvent(uint64 serverConnectionHandlerID, enum PluginMenu
 /* This function is called if a plugin hotkey was pressed. Omit if hotkeys are unused. */
 void ts3plugin_onHotkeyEvent(const char* keyword) {
 	printf("PLUGIN: Hotkey event: %s\n", keyword);
-	/* Identify the hotkey by keyword ("keyword_1", "keyword_2" or "keyword_3" in this example) and handle here... */
+
+	if (QString(keyword) == "Channellist")
+		getController()->debugPrint("WUHU");
 }
 
 /* Called when recording a hotkey has finished after calling ts3Functions.requestHotkeyInputDialog */