 			} >>> abstract)
 		case let .End(constructors):
 			let recur = Term.Variable(symbol)
-			return [ (symbol, type(), value(symbol)) ] + constructors.map {
+			return [ (symbol, type(), value(symbol, index: index)) ] + constructors.map {
 				(.Global($0), abstract(self.type($1))(recur), abstract(self.value($0, telescope: $1, constructors: constructors, index: index))(recur))
 			}
 		}

		}
	}

	public func value(symbol: Name) -> Term {
		func value(datatype: Datatype, recur: Term, index: Int) -> Term {
			let name = Name.Local(index)
			switch datatype {

				}.reverse().reduce(.Variable(name), combine: flip(-->))
			}
		}
		return value(self, recur: .Variable(symbol), index: index)
	}
}

