diff --git a/src/expr.rs b/src/expr.rs
index cec6dc2..0b8f4ee 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -200,10 +200,11 @@
         /// A closure (for example, `move |a, b, c| a + b + c`)
         pub Closure(ExprClosure #full {
             pub capture: CaptureBy,
-            pub decl: Box<FnDecl>,
-            pub body: Box<Expr>,
             pub or1_token: Token![|],
+            pub inputs: Delimited<FnArg, Token![,]>,
             pub or2_token: Token![|],
+            pub output: ReturnType,
+            pub body: Box<Expr>,
         }),
 
         /// An unsafe block (`unsafe { ... }`)
@@ -1556,7 +1557,7 @@
                 arrow: punct!(->) >>
                 ty: syn!(Type) >>
                 body: syn!(Block) >>
-                (ReturnType::Type(ty, arrow),
+                (ReturnType::Type(Box::new(ty), arrow),
                  ExprKind::Block(ExprBlock {
                     block: body,
                 }).into())
@@ -1567,16 +1568,9 @@
         (ExprClosure {
             capture: capture,
             or1_token: or1,
+            inputs: inputs,
             or2_token: or2,
-            decl: Box::new(FnDecl {
-                inputs: inputs,
-                output: ret_and_body.0,
-                variadic: false,
-                dot_tokens: None,
-                fn_token: <Token![fn]>::default(),
-                generics: Generics::default(),
-                paren_token: token::Paren::default(),
-            }),
+            output: ret_and_body.0,
             body: Box::new(ret_and_body.1),
         }.into())
     ));
@@ -2587,7 +2581,7 @@
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.capture.to_tokens(tokens);
             self.or1_token.to_tokens(tokens);
-            for item in self.decl.inputs.iter() {
+            for item in self.inputs.iter() {
                 match **item.item() {
                     FnArg::Captured(ArgCaptured {
                         ref pat,
@@ -2601,7 +2595,7 @@
                 item.delimiter().to_tokens(tokens);
             }
             self.or2_token.to_tokens(tokens);
-            self.decl.output.to_tokens(tokens);
+            self.output.to_tokens(tokens);
             self.body.to_tokens(tokens);
         }
     }
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index c8f1ae4..c07f6bf 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -904,10 +904,11 @@
 pub fn fold_expr_closure<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprClosure) -> ExprClosure {
     ExprClosure {
         capture: _visitor.fold_capture_by(_i . capture),
-        decl: Box::new(_visitor.fold_fn_decl(* _i . decl)),
-        body: Box::new(_visitor.fold_expr(* _i . body)),
         or1_token: _i . or1_token,
+        inputs: FoldHelper::lift(_i . inputs, |it| { _visitor.fold_fn_arg(it) }),
         or2_token: _i . or2_token,
+        output: _visitor.fold_return_type(_i . output),
+        body: Box::new(_visitor.fold_expr(* _i . body)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2285,7 +2286,7 @@
         Default => { Default }
         Type(_binding_0, _binding_1, ) => {
             Type (
-                _visitor.fold_type(_binding_0),
+                Box::new(_visitor.fold_type(* _binding_0)),
                 _binding_1,
             )
         }
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 72d955d..cdfefe3 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -745,10 +745,11 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_closure<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprClosure) {
     _visitor.visit_capture_by(& _i . capture);
-    _visitor.visit_fn_decl(& _i . decl);
-    _visitor.visit_expr(& _i . body);
     // Skipped field _i . or1_token;
+    for el in & _i . inputs { let it = el.item(); _visitor.visit_fn_arg(it) };
     // Skipped field _i . or2_token;
+    _visitor.visit_return_type(& _i . output);
+    _visitor.visit_expr(& _i . body);
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_continue<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprContinue) {
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index cc31959..a6afbf9 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -745,10 +745,11 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_closure_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprClosure) {
     _visitor.visit_capture_by_mut(& mut _i . capture);
-    _visitor.visit_fn_decl_mut(& mut _i . decl);
-    _visitor.visit_expr_mut(& mut _i . body);
     // Skipped field _i . or1_token;
+    for mut el in & mut _i . inputs { let it = el.item_mut(); _visitor.visit_fn_arg_mut(it) };
     // Skipped field _i . or2_token;
+    _visitor.visit_return_type_mut(& mut _i . output);
+    _visitor.visit_expr_mut(& mut _i . body);
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_continue_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprContinue) {
diff --git a/src/ty.rs b/src/ty.rs
index 2fe4ecf..09ee041 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -339,7 +339,7 @@
         /// type would be inserted.
         Default,
         /// Everything else
-        Type(Type, Token![->]),
+        Type(Box<Type>, Token![->]),
     }
 }
 
@@ -597,7 +597,7 @@
             do_parse!(
                 arrow: punct!(->) >>
                 ty: syn!(Type) >>
-                (ReturnType::Type(ty, arrow))
+                (ReturnType::Type(Box::new(ty), arrow))
             )
             |
             epsilon!() => { |_| ReturnType::Default }
