Terminated list helper
diff --git a/src/data.rs b/src/data.rs
index 71d6754..9e8e9b4 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -66,8 +66,7 @@
 
     named!(pub enum_body -> Vec<Variant>, do_parse!(
         punct!("{") >>
-        variants: separated_list!(punct!(","), variant) >>
-        option!(punct!(",")) >>
+        variants: terminated_list!(punct!(","), variant) >>
         punct!("}") >>
         (variants)
     ));
@@ -93,16 +92,14 @@
 
     named!(pub struct_like_body -> Vec<Field>, do_parse!(
         punct!("{") >>
-        fields: separated_list!(punct!(","), struct_field) >>
-        option!(punct!(",")) >>
+        fields: terminated_list!(punct!(","), struct_field) >>
         punct!("}") >>
         (fields)
     ));
 
     named!(tuple_like_body -> Vec<Field>, do_parse!(
         punct!("(") >>
-        fields: separated_list!(punct!(","), tuple_field) >>
-        option!(punct!(",")) >>
+        fields: terminated_list!(punct!(","), tuple_field) >>
         punct!(")") >>
         (fields)
     ));