diff --git a/src/data.rs b/src/data.rs
index 3a7c025..e872fb9 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -100,7 +100,7 @@
         }),
 
         /// Inherited, i.e. private.
-        pub Inherited(VisInherited {}),
+        pub Inherited,
     }
 }
 
@@ -195,7 +195,7 @@
                 })
             } }
             |
-            epsilon!() => { |_| Visibility::Inherited(VisInherited {}) }
+            epsilon!() => { |_| Visibility::Inherited }
         ));
     }
 }
@@ -273,8 +273,4 @@
             });
         }
     }
-
-    impl ToTokens for VisInherited {
-        fn to_tokens(&self, _tokens: &mut Tokens) {}
-    }
 }
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 09ec5ca..4c54cb3 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -378,8 +378,6 @@
 
 fn fold_vis_crate(&mut self, i: VisCrate) -> VisCrate { fold_vis_crate(self, i) }
 
-fn fold_vis_inherited(&mut self, i: VisInherited) -> VisInherited { fold_vis_inherited(self, i) }
-
 fn fold_vis_public(&mut self, i: VisPublic) -> VisPublic { fold_vis_public(self, i) }
 
 fn fold_vis_restricted(&mut self, i: VisRestricted) -> VisRestricted { fold_vis_restricted(self, i) }
@@ -2729,11 +2727,6 @@
     }
 }
 
-pub fn fold_vis_inherited<V: Folder + ?Sized>(_visitor: &mut V, _i: VisInherited) -> VisInherited {
-    VisInherited {
-    }
-}
-
 pub fn fold_vis_public<V: Folder + ?Sized>(_visitor: &mut V, _i: VisPublic) -> VisPublic {
     VisPublic {
         pub_token: Token ! [ pub ](tokens_helper(_visitor, &(_i . pub_token).0)),
@@ -2767,11 +2760,7 @@
                 _visitor.fold_vis_restricted(_binding_0),
             )
         }
-        Inherited(_binding_0, ) => {
-            Inherited (
-                _visitor.fold_vis_inherited(_binding_0),
-            )
-        }
+        Inherited => { Inherited }
     }
 }
 
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index e63cffb..0963158 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -374,8 +374,6 @@
 
 fn visit_vis_crate(&mut self, i: &'ast VisCrate) { visit_vis_crate(self, i) }
 
-fn visit_vis_inherited(&mut self, i: &'ast VisInherited) { visit_vis_inherited(self, i) }
-
 fn visit_vis_public(&mut self, i: &'ast VisPublic) { visit_vis_public(self, i) }
 
 fn visit_vis_restricted(&mut self, i: &'ast VisRestricted) { visit_vis_restricted(self, i) }
@@ -2108,9 +2106,6 @@
     tokens_helper(_visitor, &(& _i . crate_token).0);
 }
 
-pub fn visit_vis_inherited<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast VisInherited) {
-}
-
 pub fn visit_vis_public<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast VisPublic) {
     tokens_helper(_visitor, &(& _i . pub_token).0);
 }
@@ -2134,9 +2129,7 @@
         Restricted(ref _binding_0, ) => {
             _visitor.visit_vis_restricted(_binding_0);
         }
-        Inherited(ref _binding_0, ) => {
-            _visitor.visit_vis_inherited(_binding_0);
-        }
+        Inherited => { }
     }
 }
 
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 44a4a2e..ac36821 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -374,8 +374,6 @@
 
 fn visit_vis_crate_mut(&mut self, i: &mut VisCrate) { visit_vis_crate_mut(self, i) }
 
-fn visit_vis_inherited_mut(&mut self, i: &mut VisInherited) { visit_vis_inherited_mut(self, i) }
-
 fn visit_vis_public_mut(&mut self, i: &mut VisPublic) { visit_vis_public_mut(self, i) }
 
 fn visit_vis_restricted_mut(&mut self, i: &mut VisRestricted) { visit_vis_restricted_mut(self, i) }
@@ -2108,9 +2106,6 @@
     tokens_helper(_visitor, &mut (& mut _i . crate_token).0);
 }
 
-pub fn visit_vis_inherited_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut VisInherited) {
-}
-
 pub fn visit_vis_public_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut VisPublic) {
     tokens_helper(_visitor, &mut (& mut _i . pub_token).0);
 }
@@ -2134,9 +2129,7 @@
         Restricted(ref mut _binding_0, ) => {
             _visitor.visit_vis_restricted_mut(_binding_0);
         }
-        Inherited(ref mut _binding_0, ) => {
-            _visitor.visit_vis_inherited_mut(_binding_0);
-        }
+        Inherited => { }
     }
 }
 
diff --git a/src/lib.rs b/src/lib.rs
index a8c4a39..8fd6e0a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -30,8 +30,7 @@
 pub use attr::{AttrStyle, Attribute, MetaItem, MetaItemList, MetaNameValue, NestedMetaItem};
 
 mod data;
-pub use data::{Field, Variant, VariantData, VisCrate, VisInherited, VisPublic, VisRestricted,
-               Visibility};
+pub use data::{Field, Variant, VariantData, VisCrate, VisPublic, VisRestricted, Visibility};
 
 mod expr;
 pub use expr::{Expr, ExprAddrOf, ExprArray, ExprAssign, ExprAssignOp, ExprBinary, ExprBlock,
diff --git a/src/macros.rs b/src/macros.rs
index 1710444..9b73717 100644
--- a/src/macros.rs
+++ b/src/macros.rs
@@ -59,7 +59,7 @@
         pub enum $name:ident {
             $(
                 $(#[$variant_attr:meta])*
-                pub $variant:ident($member:ident $($rest:tt)*),
+                pub $variant:ident $( ($member:ident $($rest:tt)*) )*,
             )*
         }
 
@@ -70,7 +70,7 @@
             pub enum $name {
                 $(
                     $(#[$variant_attr])*
-                    $variant($member),
+                    $variant $( ($member) )*,
                 )*
             }
         }
@@ -78,20 +78,26 @@
         $(
             maybe_ast_struct! {
                 $(#[$variant_attr])*
-                pub struct $member $($rest)*
+                $(
+                    pub struct $member $($rest)*
+                )*
             }
 
-            impl From<$member> for $name {
-                fn from(e: $member) -> $name {
-                    $name::$variant(e)
+            $(
+                impl From<$member> for $name {
+                    fn from(e: $member) -> $name {
+                        $name::$variant(e)
+                    }
                 }
-            }
+            )*
         )*
 
         #[cfg(feature = "printing")]
         generate_to_tokens! {
             $($remaining)*
-            enum $name { $($variant [$($rest)*],)* }
+            ()
+            tokens
+            $name { $($variant $( [$($rest)*] )*,)* }
         }
     )
 }
@@ -100,18 +106,29 @@
 macro_rules! generate_to_tokens {
     (do_not_generate_to_tokens $($foo:tt)*) => ();
 
-    (enum $name:ident { $($variant:ident [$($rest:tt)*],)* }) => (
+    (($($arms:tt)*) $tokens:ident $name:ident { $variant:ident, $($next:tt)*}) => {
+        generate_to_tokens!(
+            ($($arms)* $name::$variant => {})
+            $tokens $name { $($next)* }
+        );
+    };
+
+    (($($arms:tt)*) $tokens:ident $name:ident { $variant:ident [$($rest:tt)*], $($next:tt)*}) => {
+        generate_to_tokens!(
+            ($($arms)* $name::$variant(ref _e) => to_tokens_call!(_e, $tokens, $($rest)*),)
+            $tokens $name { $($next)* }
+        );
+    };
+
+    (($($arms:tt)*) $tokens:ident $name:ident {}) => {
         impl ::quote::ToTokens for $name {
-            fn to_tokens(&self, tokens: &mut ::quote::Tokens) {
+            fn to_tokens(&self, $tokens: &mut ::quote::Tokens) {
                 match *self {
-                    $(
-                        $name::$variant(ref _e) =>
-                            to_tokens_call!(_e, tokens, $($rest)*),
-                    )*
+                    $($arms)*
                 }
             }
         }
-    );
+    };
 }
 
 #[cfg(all(feature = "printing", feature = "full"))]
@@ -135,7 +152,9 @@
 macro_rules! maybe_ast_struct {
     (
         $(#[$attr:meta])*
-        pub struct $name:ident
+        $(
+            pub struct $name:ident
+        )*
     ) => ();
 
     ($($rest:tt)*) => (ast_struct! { $($rest)* });
diff --git a/syn_codegen/src/main.rs b/syn_codegen/src/main.rs
index 3624655..68ac85b 100644
--- a/syn_codegen/src/main.rs
+++ b/syn_codegen/src/main.rs
@@ -245,23 +245,23 @@
     // A single variant of an ast_enum_of_structs!
     struct EosVariant {
         name: Ident,
-        member: Path,
+        member: Option<Path>,
         inner: Option<AstItem>,
     }
     named!(eos_variant -> EosVariant, do_parse!(
         many0!(Attribute::parse_outer) >>
         keyword!(pub) >>
         variant: syn!(Ident) >>
-        member: map!(parens!(alt!(
+        member: option!(map!(parens!(alt!(
             call!(ast_struct_inner) => { |x: AstItem| (Path::from(x.ast.ident), Some(x)) }
             |
             syn!(Path) => { |x| (x, None) }
-        )), |x| x.0) >>
+        )), |x| x.0)) >>
         punct!(,) >>
         (EosVariant {
             name: variant,
-            member: member.0,
-            inner: member.1,
+            member: member.clone().map(|x| x.0),
+            inner: member.map(|x| x.1).unwrap_or_default(),
         })
     ));
 
@@ -281,8 +281,10 @@
                 let enum_item = {
                     let variants = body.0.iter().map(|v| {
                         let name = v.name;
-                        let member = &v.member;
-                        quote!(#name(#member))
+                        match v.member {
+                            Some(ref member) => quote!(#name(#member)),
+                            None => quote!(#name),
+                        }
                     });
                     parse_tokens::<DeriveInput>(quote! {
                         pub enum #id { #(#variants),* }
diff --git a/tests/test_derive_input.rs b/tests/test_derive_input.rs
index 4462b1c..a1eebdd 100644
--- a/tests/test_derive_input.rs
+++ b/tests/test_derive_input.rs
@@ -43,7 +43,7 @@
 
     let expected = DeriveInput {
         ident: "Unit".into(),
-        vis: Visibility::Inherited(VisInherited {}),
+        vis: Visibility::Inherited,
         attrs: Vec::new(),
         generics: Generics::default(),
         body: Body::Struct(BodyStruct {
@@ -234,7 +234,7 @@
                             Field {
                                 colon_token: None,
                                 ident: None,
-                                vis: Visibility::Inherited(VisInherited {}),
+                                vis: Visibility::Inherited,
                                 attrs: Vec::new(),
                                 ty: TypePath {
                                     qself: None,
@@ -255,7 +255,7 @@
                             Field {
                                 ident: None,
                                 colon_token: None,
-                                vis: Visibility::Inherited(VisInherited {}),
+                                vis: Visibility::Inherited,
                                 attrs: Vec::new(),
                                 ty: TypePath {
                                     qself: None,
@@ -361,7 +361,7 @@
 
     let expected = DeriveInput {
         ident: "Dummy".into(),
-        vis: Visibility::Inherited(VisInherited {}),
+        vis: Visibility::Inherited,
         attrs: vec![
             Attribute {
                 bracket_token: Default::default(),
@@ -423,7 +423,7 @@
 
     let expected = DeriveInput {
         ident: "S".into(),
-        vis: Visibility::Inherited(VisInherited {}),
+        vis: Visibility::Inherited,
         attrs: vec![
             Attribute {
                 bracket_token: Default::default(),
@@ -461,7 +461,7 @@
 
     let expected = DeriveInput {
         ident: "S".into(),
-        vis: Visibility::Inherited(VisInherited {}),
+        vis: Visibility::Inherited,
         attrs: vec![
             Attribute {
                 bracket_token: Default::default(),
