
267 Wis.2d 873 (2003)
2003 WI App 242
672 N.W.2d 141
William J. STEELE, Jr., Plaintiff-Appellant,
v.
PACESETTER MOTOR CARS, INC., Defendant-Respondent.
No. 03-0640.
Court of Appeals of Wisconsin.
Submitted on briefs September 2, 2003.
Decided October 14, 2003.
*875 On behalf of the plaintiff-appellant, the cause was submitted on the briefs of Debra A. Slater of Weiss Berzowski Brady, LLP, of Milwaukee.
*876 On behalf of the defendant-respondent, the cause was submitted on the brief of Kathryn A. Keppel of Gimbel, Reilly, Guerin & Brown, of Milwaukee.
Before Fine, Schudson and Curley, JJ.
¶ 1. SCHUDSON, J.
William J. Steele, Jr., appeals from the judgment, following a two-day bench trial, awarding him damages of $1972 for Pacesetter Motor Cars, Inc.'s breach of a service contract to repair, restore and refurbish Steele's car. He argues that the trial court made several errors leading it to deny him the $14,281.98 he claimed. We conclude that the trial court erred, as a matter of law, in ruling: (1) that Steele, who had repeatedly taken his car back to Pacesetter for it to complete the restoration and repair work for which he and Pacesetter had contracted, was precluded from recovering amounts he paid for repair services rendered by Uptown Motorcars, Inc., to which he subsequently brought his car, because he had not first given Pacesetter one more opportunity to fix it; and (2) that Allis Machine, the subcontractor to which Uptown sent Steele's engineer (and to which Pacesetter, coincidentally, had subcontracted some of its work on the car), not Pacesetter, was the party potentially liable for Steele's additional repair costs. Accordingly, we reverse and remand for the trial court's consideration of the evidence under the correct legal standards.[1]


*877 I. BACKGROUND
¶ 2. In 1989, Steele bought a 1963 Chevrolet Impala with the intention of restoring it to its original condition. After doing much of the disassembling work himself, Steele, in 1996, met Patrick Murray, an instructor in the automotive program at Waukesha County Technical College, who had employment experience with General Motors and at a local Chevrolet dealership. Murray expressed interest in restoring the engine; he and Steele contracted for Murray's company, Pacesetter, to do the work, initially estimated at $3,343.84.
¶ 3. From July 1996 through May 1999, Pacesetter worked on the engine and other aspects of the car's restoration. Pacesetter charged Steele more than $21,000 for the work, almost all of which he paid. Although Steele felt some frustration as the costs mounted and more and more time passed, he concluded that it would be best to allow Pacesetter to complete the work. Upon "completion," however, the troubles began.
¶ 4. When Steele picked up the car from Pacesetter in May 1999, the engine backfired each time it was turned off. Steele complained, and Murray instructed him on how to turn off the engine to prevent backfiring. While deeming such special instructions "ridiculous," Steele, anxious to finally drive the car home, left without insisting on further repair. As Steele and his son drove home, however, they noticed that the car was not operating well and that the engine was unusually loud. And when they parked at home, they soon saw oil on the driveway, apparently leaking from the engine. They immediately returned the car to Pacesetter.
¶ 5. Pacesetter took the car back and continued working on it for two weeks, solving some problems, *878 charging for some additional services and not charging for others. Steele remained dissatisfied, however, particularly with what Murray explained would be some unavoidable oil leakage. And, when Steele then attempted to drive the car, the engine would not start. Murray opened the hood, took off the air cleaners, and attempted to start the car, only to see flames shooting from the carburetor and singeing the hood insulation. Steele refused to accept the car.
¶ 6. Murray then sent the car to a carburetor shop and, a few weeks later, advised Steele that it was ready. On delivery, however, Steele still was not pleased with its condition and performance. So when he took the car to Uptown Motorcars for realignment, he also asked that Uptown take "a quick look at the engine because it still seemed to be running very rough." Steele paid Uptown $993.55 for its services, almost all of which related to alleged adjustments to and corrections of Pacesetter's work.
¶ 7. But Steele, still not satisfied with the way the car was running, took it to another Uptown dealership for additional mechanical and body work. From July 1999 through February or March 2000, Uptown then performed extensive work, charging Steele $4,710.82 for body work to "redo previous work done by another shop best as possible," and $8,577.61 to fix the engine. To accomplish that engine work, Uptown sent the engine to Allis Machine, a company that routinely performed engine work on a subcontract basis, and coincidentally, the very company to which Pacesetter had sent the engine for some of the earlier engine restoration.
¶ 8. Having been informed by Uptown's mechanic and body shop manager that Pacesetter's work was deficient, and that it led to the need for most of the *879 subsequent services, Steele sued Pacesetter alleging violation of WIS. ADMIN. CODE § ATCP 132, governing automobile repair practices, and breach of contract. Denying Steele's allegations, Pacesetter asserted that Allis Machine was responsible for the engine problems. Moreover, Pacesetter maintained that Steele should have given it another chance to address the problems so that it could have returned the engine to Allis Machine for repairs. Pacesetter also contended that Steele's son's secret driving of the car had caused some of the problems.
¶ 9. Following a two-day bench trial, the court concluded that Pacesetter had not violated the administrative code, and had "performed all of its services .. . relative to the engine, clutch, power train . . . in a good and workmanlike manner to the extent allowed by Steele." The trial court also found, however, that some of Pacesetter's work "with respect to the reassembling the vehicle, specifically aligning parts and the trim and carpet on the interior were not performed in a proper and workmanlike manner." For that, the court awarded Steele $1972. On appeal, Steele does not challenge the court's conclusion under the administrative code. He does, however, challenge the trial court's findings and conclusion under his breach-of-contract claim.

II. DISCUSSION
[1-3]
¶ 10. We will not reverse factual findings made by a trial court unless they are clearly erroneous. See WIS. STAT. § 805.17(2) (2001-02); Benn v. Benn, 230 Wis. 2d *880 301, 307, 602 N.W.2d 65 (Ct. App. 1999).[2] However, whether the facts found by the trial court constitute a breach of contract is a legal issue we review de novo. See Edwards v. Petrone, 160 Wis. 2d 255, 258, 465 N.W.2d 847 (Ct. App. 1990). In evaluating a breach of contract claim, a court must determine whether a valid contract exists, whether a party has violated its terms, and whether any such violation is material such that it has resulted in damages. See Management Computer Servs., Inc. v. Hawkins, Ash, Baptie Co., 206 Wis.2d 158, 178-83, 557 N.W.2d 67 (1996).
[4, 5]
¶ 11. "A contract is a promise or a set of promises for the breach of which the law gives a remedy, or the performance of which the law in some way recognizes as a duty. RESTATEMENT (SECOND) OF CONTRACTS 1 (1981). Moreover, and of particular relevance to this case:
Non-performance is not a breach unless performance is due . . . . When performance is due, however, anything short of full performance is a breach, even if the party who does not fully perform was not at fault and even if the defect in his [or her] performance was not substantial . . . . Non-performance includes defective performance as well as an absence of performance.
Id. at § 235 cmt. b.


*881 A. Was Steele Required to Return the Car to Pacesetter Again?
[6]
¶ 12. Steele first argues that the trial court erred in concluding that his failure to afford Pacesetter one more chance to fix the car precluded any additional recovery. Steele is correct.
¶ 13. At trial, Murray testified, "I believe it was Mr. Steele's responsibility to come back to me if he felt that I did something wrong with that engine and the engine needed attention," and in closing argument, Pacesetter's counsel emphasized this theory. The trial court agreed. While expressing some sympathy for Steele's circumstances, the court concluded:
Seems to me that if Mr. Steele had brought the vehicle back to Mr. Murray and given him an opportunity to figure out why the engine wasn't running properly, . . . [i]t would have gone back to Allis [Motors] or some other engine rebuilder to discover what Uptown was ultimately able to force Allis to discover . . . .
Well, Mr. Murray didn't get the benefit of making Allis do it over. But now he is supposed to pay the penalty for Allis doing the job right they [sic] should have done right the very first time Mr. Murray sent the vehicle there. I don't see how that can be Mr. Murray's fault, when he isn't given an opportunity to send it back.
Do I fault Mr. Steele for that? Not entirely. Because I guess at that point, given how long Mr. Murray had had the car, ... it's certainly understandable [that] Mr. Steele is frustrated and wants his car . . . . But I don't think it means Mr. Murray doesn't get the benefit of trying to fix what Allis did wrong. And Mr. Murray was not given that opportunity.
*882 [7]
¶ 14. Whether the contract required Steele to return to Pacesetter one more time in order to recover the costs of subsequent repairs under his breach-of-contract claim is a legal issue we review de novo. See Management Computer Servs., Inc., 206 Wis. 2d at 178-83. Under the facts and circumstances of this case, we conclude that Steele had no obligation to go back to Pacesetter one more time.
¶ 15. The trial court found that a contract existed between Pacesetter and Steele. Specifically, with respect to the engine, the court found that, in October 1996, the parties entered into an agreement "whereby for an estimated price, Pacesetter would construct a 409 cubic inch engine for the Impala from parts supplied by Steele and additional parts to be purchased by Steele, at his cost, for Pacesetter." The estimate was reduced to writing in a document specifying that "[t]he engine would be fully blueprinted as part of the assembly process to ensure [Steele] of many trouble free miles." (Emphasis added.) Neither that document nor any trial testimony suggested that Steele was required to give Pacesetter an opportunity to cure any defect in its workmanship. Consequently, the trial court erred by implicitly reading such a requirement into the contract.
[8]
¶ 16. On appeal, the parties debate whether, regardless of their contract, Steele, in order to preserve his potential claim, had a duty to notify Pacesetter of his dissatisfaction. They have not, however, provided any authority addressing that exact issue and we have found none. The parties, citing Dittman v. Nagel, 43 Wis.2d 155, 161, 168 N.W.2d 190 (1969) (Uniform-Commercial-Code principles regarding express warranties of quality involved in the sale of goods may be used *883 to analyze warranties involved in sale of realty), have directed our attention to notice principles under the Uniform Commercial Code, from which we do gain guidance.
¶ 17. Under the UCC, the supreme court concluded, notice "need merely be sufficient to let the seller know that the transaction is still troublesome and must be watched." Paulson v. Olson Implement Co., 107 Wis. 2d 510, 523, 319 N.W.2d 855 (1982) (internal quotation marks and quoted source omitted). Moreover, the notice must be sufficient to enable the seller to attempt to repair the defect. Id. at 525-26. Without defining exactly where the line would be drawn under other circumstances, here, unquestionably, Pacesetter received notice that the car's engine was "still troublesome" and was given ample opportunity to attempt to repair the defect. See id.
¶ 18. Pacesetter argues, however, that "Steele's complaints . . . about the oil leak, engine backfiring, noise and carburetor problemsall of which Pacesetter either repaired at no cost or explained to Steeledid not constitute sufficient notice that he experienced additional engine problems after Steele picked up the vehicle the last time." We disagree. Under the undisputed facts of this case, Steele and Pacesetter entered into an agreement to rebuild the engine "to ensure .. . many trouble free miles." When the engine failed to perform, Steele could have chosen to return to Pacesetter, but he was not required to do so. To preserve a potential claim and ultimately recover damages, a consumer, in the absence of a contractual requirement to do so, need not keep carrying the bucket to the well after reasonably concluding that the well is dry.


*884 B. Was Steele Required to Bring His Action Against Allis Machine?
[9]
¶ 19. The trial court found that "the major portion of the work done by Uptown" may have been caused by Allis Machine's "mistreatment of the engine block." The court also concluded, however, that Steele, to recover the costs resulting from Allis'"mistreatment," would have had to have joined Allis as a defendant in his action against Pacesetter. The court was incorrect.
[10, 11]
¶ 20. Whether, in order to recover damages from a contractor, a consumer must join the subcontractor who performed the work is a legal issue subject to our de novo review. See Dairyland Greyhound Park, Inc. v. McCallum, 2002 WI App 259, 10, 258 Wis. 2d 210, 655 N.W.2d 474, review denied, 2003 WI 1, 258 Wis.2d 110, 655 N.W.2d 129 (Wis. Nov. 12, 2002) (No. 02-1204) (whether a party is indispensable presents a question of law). "The hornbook principle of contract law is that the delegation of the performance of a contract does not, unless the obligee agrees otherwise, discharge the liability of the delegating obligor to the obligee for breach of contract." Brooks v. Hayes, 133 Wis. 2d 228, 236, 395 N.W.2d 167 (1986).
¶ 21. Here, there is no hint of any agreement to "discharge the liability of the delegating obligor to the obligee for breach of contract." See id. In fact, Steele apparently did not even know Pacesetter had sent the engine to Allis Machine. Pacesetter remained responsible to Steele for its decision to send the engine to Allis and for the work Allis performed. As the supreme court explained:

*885 The rule for delegation of responsibility is that if the obligor delegates the performance of an obligation, the obligor is not relieved of responsibility for fulfilling that obligation or of liability in the event of a breach. The obligor under the contract is treated as having rendered the performance even when an independent contractor has rendered it, and the obligor remains the party liable for that performance if the performance proves to be in breach of the contract.

Id. at 244 (emphasis added). In its brief to this court, Pacesetter writes that it "does not dispute Steele's general premise: delegation of the performance of a contract does not discharge the delegating party from responsibility for performing the contract." Pacesetter simply argues, however, that "this principle does not defeat the notice requirement"a requirement that, as Pacesetter has attempted to apply it here, we have rejected. Clearly, therefore, Steele could sue Pacesetter and Pacesetter would remain liable for Allis Machine's "mistreatment" of the engine.
By the Court.Judgment reversed and cause remanded with directions.
NOTES
[1]  We do not address Steele's third appellate challengeto the trial court's appraisal of the evidence related to what Steele terms "the defendant's affirmative defenses," and to its assessment of the significance of Steele's son's testimony. These matters may factor into the trial court's reconsideration of the evidence.
[2]  All references to the Wisconsin Statutes are to the 2001-02 version unless otherwise noted.
