diff --git a/src/dispatching/dialogue.rs b/src/dispatching/dialogue.rs
index c8d27896..89d16326 100644
--- a/src/dispatching/dialogue.rs
+++ b/src/dispatching/dialogue.rs
@@ -220,18 +220,17 @@ where
     Upd: GetChatId + Clone + Send + Sync + 'static,
     Output: Send + Sync + 'static,
 {
-    dptree::entry()
-        .chain(dptree::filter_map(|storage: Arc<S>, upd: Upd| {
-            let chat_id = upd.chat_id()?;
-            Some(Dialogue::new(storage, chat_id))
-        }))
-        .chain(dptree::filter_map_async(|dialogue: Dialogue<D, S>| async move {
-            match dialogue.get_or_default().await {
-                Ok(dialogue) => Some(dialogue),
-                Err(err) => {
-                    log::error!("dialogue.get_or_default() failed: {:?}", err);
-                    None
-                }
+    dptree::filter_map(|storage: Arc<S>, upd: Upd| {
+        let chat_id = upd.chat_id()?;
+        Some(Dialogue::new(storage, chat_id))
+    })
+    .filter_map_async(|dialogue: Dialogue<D, S>| async move {
+        match dialogue.get_or_default().await {
+            Ok(dialogue) => Some(dialogue),
+            Err(err) => {
+                log::error!("dialogue.get_or_default() failed: {:?}", err);
+                None
             }
-        }))
+        }
+    })
 }
diff --git a/src/dispatching/handler_ext.rs b/src/dispatching/handler_ext.rs
index 932d5079..0013acb4 100644
--- a/src/dispatching/handler_ext.rs
+++ b/src/dispatching/handler_ext.rs
@@ -88,8 +88,8 @@ where
     C: BotCommands + Send + Sync + 'static,
     Output: Send + Sync + 'static,
 {
-    dptree::entry().chain(dptree::filter_map(move |message: Message, me: Me| {
+    dptree::filter_map(move |message: Message, me: Me| {
         let bot_name = me.user.username.expect("Bots must have a username");
         message.text().and_then(|text| C::parse(text, &bot_name).ok())
-    }))
+    })
 }