diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs
index 5d99a00..4fa4ad0 100644
--- a/maud_macros/src/parse.rs
+++ b/maud_macros/src/parse.rs
@@ -9,9 +9,9 @@ use syntax::fold::Folder;
 use syntax::parse;
 use syntax::parse::parser::Parser as RustParser;
 use syntax::parse::token::{BinOpToken, DelimToken, Nonterminal, Token};
-use syntax::parse::token::keywords;
 use syntax::print::pprust;
 use syntax::ptr::P;
+use syntax::symbol::keywords;
 use syntax::tokenstream::{Delimited, TokenTree};
 
 use super::render::Renderer;
@@ -217,7 +217,7 @@ impl<'cx, 'a, 'i> Parser<'cx, 'a, 'i> {
     fn literal(&mut self, tt: &TokenTree) -> PResult<()> {
         let lit = self.with_rust_parser(vec![tt.clone()], RustParser::parse_lit)?;
         if let LitKind::Str(s, _) = lit.node {
-            self.render.string(&s);
+            self.render.string(&s.as_str());
             Ok(())
         } else {
             parse_error!(self, lit.span, "literal strings must be surrounded by quotes (\"like this\")")
diff --git a/maud_macros/src/render.rs b/maud_macros/src/render.rs
index 10222da..c7749d5 100644
--- a/maud_macros/src/render.rs
+++ b/maud_macros/src/render.rs
@@ -1,7 +1,7 @@
 use syntax::ast::{Expr, Ident, Pat, Stmt};
 use syntax::ext::base::ExtCtxt;
-use syntax::parse::token;
 use syntax::ptr::P;
+use syntax::symbol::Symbol;
 use syntax::tokenstream::TokenTree;
 
 use maud::Escaper;
@@ -16,7 +16,7 @@ pub struct Renderer<'cx, 'a: 'cx> {
 impl<'cx, 'a> Renderer<'cx, 'a> {
     /// Creates a new `Renderer` using the given extension context.
     pub fn new(cx: &'cx ExtCtxt<'a>) -> Renderer<'cx, 'a> {
-        let writer = token::gensym_ident("__maud_writer");
+        let writer = Ident::with_empty_ctxt(Symbol::gensym("__maud_output"));
         Renderer {
             cx: cx,
             writer: writer,