diff --git a/maud_macros/src/lib.rs b/maud_macros/src/lib.rs
index f3a9574..beb9243 100644
--- a/maud_macros/src/lib.rs
+++ b/maud_macros/src/lib.rs
@@ -1,7 +1,7 @@
 #![crate_type = "dylib"]
 #![feature(plugin_registrar, quote)]
 #![feature(slice_patterns)]
-#![feature(collections, rustc_private)]
+#![feature(rustc_private)]
 
 extern crate syntax;
 extern crate rustc;
diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs
index 165a130..b9ab877 100644
--- a/maud_macros/src/parse.rs
+++ b/maud_macros/src/parse.rs
@@ -136,10 +136,16 @@ impl<'cx, 'i> Parser<'cx, 'i> {
                 self.element(sp, name.as_str());
             },
             // Block
-            [TtDelimited(sp, ref d), ..] if d.delim == token::DelimToken::Brace => {
+            [TtDelimited(_, ref d), ..] if d.delim == token::DelimToken::Brace => {
                 self.shift(1);
-                let stmts = self.block(sp, &d.tts);
-                self.render.push_stmts(stmts);
+                {
+                    // Parse the contents of the block, emitting the
+                    // result inline
+                    let mut i = &*d.tts;
+                    mem::swap(&mut self.input, &mut i);
+                    self.markups();
+                    mem::swap(&mut self.input, &mut i);
+                }
             },
             // ???
             _ => {
diff --git a/maud_macros/src/render.rs b/maud_macros/src/render.rs
index 7da3961..5f9fba6 100644
--- a/maud_macros/src/render.rs
+++ b/maud_macros/src/render.rs
@@ -70,12 +70,6 @@ impl<'cx> Renderer<'cx> {
         stmts
     }
 
-    /// Appends the list of statements to the output.
-    pub fn push_stmts(&mut self, mut stmts: Vec<P<Stmt>>) {
-        self.flush();
-        self.stmts.append(&mut stmts);
-    }
-
     /// Pushes an statement, flushing the tail buffer in the process.
     fn push(&mut self, stmt: P<Stmt>) {
         self.flush();