 
 	public init(_ t1: A, _ k: A -> A, _ wv: Weave) {
 		self.init { fl0 in
-			loc1(Weaver.call(wv), { t1 in fl0(k(t1)) })(t1)
+			Location.loc(Weaver.call(wv), { t1 in fl0(k(t1)) })(t1)
 		}
 	}
 

	public let left: A -> Location
	public let right: A -> Location

	public static func loc<A>(wv: (A -> Location) -> A -> Location, _ fl0: Location) -> Location {
		return fl0
	}
}


}


public func loc2<A>(wv: (A -> Location<A>) -> A -> Location<A>, _ fl0: A -> A -> Location<A>) -> A -> A -> Location<A> {
	func fl1(t1: A)(_ t2: A) -> Location<A> {
		let upd: (A -> A -> Location<A>) -> A -> Location<A> = { fl in { t1 in fl(t1)(t2) } }
