 					} }
 				}
 			},
-			lambda(enumeration) { E in
+			lambda(Enumeration) { E in
 				Recur.lambda(.lambda(Tag[E], const(.Type))) { P in
 					.lambda(Branches[E, P], const(Recur.lambda(Tag[E]) { t in P[t] }))
 				}
 			})
 
 		return Module([ list ], [
-			Binding("String", .Axiom(String.self, .Type(0)), .Type(0)),
+			Binding("String", Axiom(String.self, .Type), .Type(0)),
 			Binding("Label", "String", .Type(0)),
-			Binding("Enumeration", Recur("List")[label].out, .Type(0)),
+			Binding("Enumeration", Recur("List")[Label].out, .Type(0)),
 
 			tag,
 			here,

						.Unit)
				}
			},
			lambda(enumeration) { E in
				.lambda(.lambda(Tag[E], const(.Type)), const(.Type))
			})


		//     then (P here, Branches E (λ t : Tag E . P (there t)))
		//     else Unit
		let branches = Binding("Branches",
			lambda(Enumeration) { E in
				Recur.lambda(.lambda(Tag[E], const(.Type))) { P in
					.If(E.first,
						.Product(
