 		return undefined()
 	}
 	
-	func flatMap<B>(f : T -> Free<B>) -> Free<B> {
+	func flatMap<B>(f : T -> FreeId<B>) -> FreeId<B> {
 		return liftCodense(self, f)
 	}
 }
 
-private class Pure<T> : Free<T> {
+private class Pure<T> : FreeId<T> {
 	let val : T
 	
 	init(x : T) {
 		self.val = x
 	}
 	
-	private override func fold<R>(norm: Free<T> -> R, codense : Codensity<T> -> R) -> R {
+	private override func fold<R>(norm: FreeId<T> -> R, codense : Codensity<T> -> R) -> R {
 		return norm(self)
 	}
 	

		}
	}
	
	func fold<R>(norm : Free<T> -> R, codense : Codensity<T> -> R) -> R {
		return undefined()
	}
	

	}
}

private class Suspend<T> : FreeId<T> {
	let suspension : Box<() -> Trampoline<T>>
	
	init(s : Box<() -> Trampoline<T>>) {
		self.suspension = s
	}
	
	private override func fold<R>(norm : FreeId<T> -> R, codense : Codensity<T> -> R) -> R {
		return norm(self)
	}
	
