diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index d8fbd91..2d6a92d 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -10,30 +10,8 @@
 #![cfg_attr(feature = "cargo-clippy", allow(needless_pass_by_value))]
 
 use *;
-use delimited::Delimited;
 use proc_macro2::Span;
-
-trait FoldHelper {
-    type Item;
-    fn lift<F>(self, f: F) -> Self where F: FnMut(Self::Item) -> Self::Item;
-}
-
-impl<T> FoldHelper for Vec<T> {
-    type Item = T;
-    fn lift<F>(self, f: F) -> Self where F: FnMut(Self::Item) -> Self::Item {
-        self.into_iter().map(f).collect()
-    }
-}
-
-impl<T, U> FoldHelper for Delimited<T, U> {
-    type Item = T;
-    fn lift<F>(self, mut f: F) -> Self where F: FnMut(Self::Item) -> Self::Item {
-        self.into_iter().map(|elem| {
-            let (t, u) = elem.into_tuple();
-            (f(t), u)
-        }).collect::<Vec<(T, Option<U>)>>().into()
-    }
-}
+use gen::helper::fold::*;
 
 
 #[cfg(feature = "full")]
diff --git a/src/gen_helper.rs b/src/gen_helper.rs
new file mode 100644
index 0000000..bac8463
--- /dev/null
+++ b/src/gen_helper.rs
@@ -0,0 +1,26 @@
+#[cfg(feature = "fold")]
+pub mod fold {
+    use delimited::Delimited;
+
+    pub trait FoldHelper {
+        type Item;
+        fn lift<F>(self, f: F) -> Self where F: FnMut(Self::Item) -> Self::Item;
+    }
+
+    impl<T> FoldHelper for Vec<T> {
+        type Item = T;
+        fn lift<F>(self, f: F) -> Self where F: FnMut(Self::Item) -> Self::Item {
+            self.into_iter().map(f).collect()
+        }
+    }
+
+    impl<T, U> FoldHelper for Delimited<T, U> {
+        type Item = T;
+        fn lift<F>(self, mut f: F) -> Self where F: FnMut(Self::Item) -> Self::Item {
+            self.into_iter().map(|elem| {
+                let (t, u) = elem.into_tuple();
+                (f(t), u)
+            }).collect::<Vec<(T, Option<U>)>>().into()
+        }
+    }
+}
diff --git a/src/lib.rs b/src/lib.rs
index 1fa2eed..a8c4a39 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -113,6 +113,9 @@
 
     #[cfg(feature = "fold")]
     pub mod fold;
+
+    #[path = "../gen_helper.rs"]
+    mod helper;
 }
 pub use gen::*;
 
diff --git a/syn_codegen/src/main.rs b/syn_codegen/src/main.rs
index ca6a937..e0f7625 100644
--- a/syn_codegen/src/main.rs
+++ b/syn_codegen/src/main.rs
@@ -952,30 +952,8 @@
 #![cfg_attr(feature = \"cargo-clippy\", allow(needless_pass_by_value))]
 
 use *;
-use delimited::Delimited;
 use proc_macro2::Span;
-
-trait FoldHelper {{
-    type Item;
-    fn lift<F>(self, f: F) -> Self where F: FnMut(Self::Item) -> Self::Item;
-}}
-
-impl<T> FoldHelper for Vec<T> {{
-    type Item = T;
-    fn lift<F>(self, f: F) -> Self where F: FnMut(Self::Item) -> Self::Item {{
-        self.into_iter().map(f).collect()
-    }}
-}}
-
-impl<T, U> FoldHelper for Delimited<T, U> {{
-    type Item = T;
-    fn lift<F>(self, mut f: F) -> Self where F: FnMut(Self::Item) -> Self::Item {{
-        self.into_iter().map(|elem| {{
-            let (t, u) = elem.into_tuple();
-            (f(t), u)
-        }}).collect::<Vec<(T, Option<U>)>>().into()
-    }}
-}}
+use gen::helper::fold::*;
 
 {full_macro}
 
