 			return ifPi(type.value, body)
 		case let .Sigma(type, body):
 			return ifSigma(type.value, body)
-		case let .Neutral(n):
-			return ifNeutral(n.value)
+		case let .Free(n):
+			return ifFree(n)
 		}
 	}
 

		return foldr(types, Value.UnitTerm, Value.product)
	}

	public static func free(name: Name) -> Value {
		return .neutral(.Free(name))
	}

	public static func neutral(value: Manifold.Neutral) -> Value {
		return .Neutral(Box(value))
	}

	public static var type: Value {
		return .Type(0)
	}

	public static func type(n: Int) -> Value {
		return .Type(n)
	}



			ifSigma: { type, f in
				Term(Checkable.Sigma(Box(type.quote(n)), Box(f(.free(.Quote(n))).quote(n + 1))))
			},
			ifFree: { name -> Term in
				name.analysis(
					ifGlobal: const(Term.free(name)),
					ifLocal: const(Term.free(name)),
					ifQuote: { Term.bound(n - $0 - 1) })
			})
	}

