diff --git a/src/sugar.rs b/src/sugar.rs
index eef8dee..de9c864 100644
--- a/src/sugar.rs
+++ b/src/sugar.rs
@@ -247,11 +247,29 @@ impl SugaredTypeTerm {
                     members.into_iter().map(|t| t.desugar(dict))
                 ).collect()),
             SugaredTypeTerm::Enum{ enum_repr, variants } => TypeTerm::App(
-                std::iter::once( dict.parse("Enum").unwrap() ).chain(
+                std::iter::once(
+                    if let Some(sr) = enum_repr {
+                        TypeTerm::Ladder(vec![
+                            dict.parse("Enum").unwrap(),
+                            sr.desugar(dict)
+                        ])
+                    } else {
+                        dict.parse("Enum").unwrap()
+                    }
+                ).chain(
                     variants.into_iter().map(|t| t.desugar(dict))
                 ).collect()),
             SugaredTypeTerm::Seq{ seq_repr, items } => TypeTerm::App(
-                std::iter::once( dict.parse("Seq").unwrap() ).chain(
+                std::iter::once(
+                    if let Some(sr) = seq_repr {
+                        TypeTerm::Ladder(vec![
+                            dict.parse("Seq").unwrap(),
+                            sr.desugar(dict)
+                        ])
+                    } else {
+                        dict.parse("Seq").unwrap()
+                    }
+                ).chain(
                     items.into_iter().map(|t| t.desugar(dict))
                 ).collect()),
         }