diff --git a/src/accountbanstab.cpp b/src/accountbanstab.cpp
index 91b13a4..e586671 100644
--- a/src/accountbanstab.cpp
+++ b/src/accountbanstab.cpp
@@ -23,8 +23,9 @@
 
 // LRC
 #include <accountmodel.h>
+#include <bannedcontactmodel.h>
+#include <contactmethod.h>
 #include <personmodel.h>
-#include <person.h>
 
 // Ring Client
 #include "accountbanstab.h"
@@ -62,6 +63,7 @@
     Account   *account;
     GtkWidget *scrolled_window_bans_tab;
     GtkWidget *treeview_bans;
+    GtkWidget *button_unban;
     QMetaObject::Connection account_state_changed;
 
 };
@@ -85,6 +87,49 @@
 }
 
 /**
+ * gtk callback function called when the selection in the contact request list changed
+ */
+static void
+selection_bans_changed(GtkTreeSelection* selection, AccountBansTab* self)
+{
+    auto priv = ACCOUNT_BANS_TAB_GET_PRIVATE(self);
+    auto has_selection = (gtk_tree_selection_count_selected_rows(selection) > 0);
+
+    gtk_widget_set_sensitive(priv->button_unban, has_selection);
+}
+
+/**
+ * gtk callback function called when button_unban is clicked.
+ */
+static void
+button_unban_clicked(AccountBansTab* view)
+{
+    auto priv = ACCOUNT_BANS_TAB_GET_PRIVATE(view);
+    auto treeview = GTK_TREE_VIEW(priv->treeview_bans);
+    auto tsel = gtk_tree_view_get_selection(treeview);
+
+    GtkTreeModel* tm;
+    GtkTreeIter iter;
+
+    if (gtk_tree_selection_get_selected(tsel , &tm , &iter)) {
+        /* get Account */
+        const auto idx_account = AccountModel::instance().selectionModel()->currentIndex();
+        auto account = idx_account.data(static_cast<int>(Account::Role::Object)).value<Account*>();
+
+        /* get ContactMethod */
+        const auto idx_cm = gtk_q_tree_model_get_source_idx(GTK_Q_TREE_MODEL(gtk_tree_view_get_model(treeview)), &iter);
+        auto cm = idx_cm.data(static_cast<int>(ContactMethod::Role::Object)).value<ContactMethod*>();
+
+        if (not cm or not account) {
+            g_error("cannot unban, invalid pointer(s). cm(%p), account(%p)", cm, account);
+            return;
+        }
+
+        account->bannedContactModel()->remove(cm);
+    }
+}
+
+/**
  * gtk finalize function
  */
 static void
@@ -104,6 +149,11 @@
 
     priv->treeview_bans = banned_contacts_view_new();
     gtk_container_add(GTK_CONTAINER(priv->scrolled_window_bans_tab), priv->treeview_bans);
+
+    auto selection_bans = gtk_tree_view_get_selection(GTK_TREE_VIEW(priv->treeview_bans));
+
+    g_signal_connect_swapped(priv->button_unban, "clicked", G_CALLBACK(button_unban_clicked), view);
+    g_signal_connect(selection_bans, "changed", G_CALLBACK(selection_bans_changed), view);
 }
 
 /**
@@ -118,6 +168,7 @@
     gtk_widget_class_set_template_from_resource(GTK_WIDGET_CLASS (klass), "/cx/ring/RingGnome/accountbanstab.ui");
 
     gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), AccountBansTab, scrolled_window_bans_tab);
+    gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), AccountBansTab, button_unban);
 }
 
 /**
