diff --git a/pallets/authority-members/src/impls.rs b/pallets/authority-members/src/impls.rs
index ade9f7437bcf80a0e396625d44530c901841dd35..bdea383ae42477ef04c8eb4945d778b7fdcc8489 100644
--- a/pallets/authority-members/src/impls.rs
+++ b/pallets/authority-members/src/impls.rs
@@ -24,6 +24,7 @@
 #![allow(clippy::type_complexity)]
 
 use super::pallet::*;
+use crate::OnBlacklistedMember;
 use frame_support::pallet_prelude::Weight;
 use frame_support::traits::Get;
 use pallet_offences::traits::OnOffenceHandler;
@@ -54,9 +55,9 @@ where
         match strategy {
             SlashStrategy::Blacklist => {
                 for offender in offenders {
-                    Blacklist::<T>::mutate(|blacklist| {
-                        if let Some(member_id) = T::MemberIdOf::convert(offender.offender.0.clone())
-                        {
+                    if let Some(member_id) = T::MemberIdOf::convert(offender.offender.0.clone()) {
+                        T::OnBlacklistedMember::on_blacklisted_member(member_id.clone());
+                        Blacklist::<T>::mutate(|blacklist| {
                             if !blacklist.contains(&member_id) {
                                 blacklist.push(member_id);
                                 Self::deposit_event(Event::MemberAddedToBlacklist {
@@ -66,8 +67,8 @@ where
                             }
                             Self::insert_out(member_id);
                             add_db_reads_writes(2, 1);
-                        }
-                    })
+                        });
+                    }
                 }
             }
             SlashStrategy::Disconnect => {
diff --git a/pallets/authority-members/src/lib.rs b/pallets/authority-members/src/lib.rs
index 9284bb25c88a8d02111a972a59f910fc7ab7f14a..78be54ef211abc8d2f5f4074714483e7706fff7a 100644
--- a/pallets/authority-members/src/lib.rs
+++ b/pallets/authority-members/src/lib.rs
@@ -71,6 +71,7 @@ pub mod pallet {
         type OnRemovedMember: OnRemovedMember<Self::MemberId>;
         type OnOutgoingMember: OnOutgoingMember<Self::MemberId>;
         type OnIncomingMember: OnIncomingMember<Self::MemberId>;
+        type OnBlacklistedMember: OnBlacklistedMember<Self::MemberId>;
         /// Max number of authorities allowed
         #[pallet::constant]
         type MaxAuthorities: Get<u32>;
diff --git a/pallets/smith-members/src/impls.rs b/pallets/smith-members/src/impls.rs
index be6180f05c9523ce5c916dc52c4dcb0bd07ebc26..12b7c907731d43a427e797b932531cd224f157ab 100644
--- a/pallets/smith-members/src/impls.rs
+++ b/pallets/smith-members/src/impls.rs
@@ -15,9 +15,11 @@ impl<T: Config> pallet_authority_members::OnRemovedMember<T> for Pallet<T> {
 /// We want to remove a Smith when he is removed (blacklisted) from the higher level set of "authorities".
 /// A blacklisting means the user does not respect the operational conditions for an authority, so
 /// he does not deserve the Smith role.
-impl<T: Config> pallet_authority_members::OnBlacklistedMember<T> for Pallet<T> {
-    fn on_blacklisted_member(member_id: T) {
-        todo!("Remove smith, he is dangereous")
+impl<T: Config> pallet_authority_members::OnBlacklistedMember<T::MemberId> for Pallet<T> {
+    fn on_blacklisted_member(member_id: T::MemberId) {
+        Pallet::<T>::smith_goes_blacklisted(
+            T::IdtyIdOfAuthorityId::convert(member_id).expect("convertion should be ok"),
+        );
     }
 }
 
diff --git a/pallets/smith-members/src/lib.rs b/pallets/smith-members/src/lib.rs
index 040e4fb039eefa4af66fcd6790a98fa1aae69e58..2a33e783b06c7f7efb3e06c8b04b98efe25af84a 100644
--- a/pallets/smith-members/src/lib.rs
+++ b/pallets/smith-members/src/lib.rs
@@ -392,6 +392,15 @@ impl<T: Config> Pallet<T> {
             }
         }
     }
+
+    // TODO: return what?
+    fn smith_goes_blacklisted(idty_index: T::IdtyIndex) {
+        // TODO: for now, just let smith_goes_offline do the job
+        // if let Some(_) = Smiths::<T>::get(idty_index) {
+        //     Smiths::<T>::remove(idty_index);
+        //     T::OnSmithDelete::on_smith_delete(idty_index, SmithRemovalReason::Blacklisted);
+        // }
+    }
 }
 
 impl<T: Config> Pallet<T> {