 		self.rootBox = TransactionalPropertyBox(inner)
 
 		action = { input in
-			switch body(inner.value, input) {
+			switch body(input) {
 			case let .success(innerResult):
 				inner.value = innerResult
 				_validations.value = .success()

	public func validate<Error: Swift.Error>(
		_ predicate: @escaping (Value) -> Result<(), Error>
		) -> TransactionalProperty<Value, Error> {
		return TransactionalProperty(self) { current, proposedInput in
			switch predicate(proposedInput) {
			case .success:
				return .success(proposedInput)


	/// Create an `TransactionalProperty` that presents `inner` as an
	/// `TransactionalProperty` of `U` value and `E` error, and invoke `body` with
	/// the proposed value whenever the setter is invoked.
	///
	/// If `success` is returned by `body`, the associated value would be
	/// persisted to `inner`. Otherwise, the failure would be emitted by the
