XML 26 R13.htm IDEA: XBRL DOCUMENT v3.22.0.1
Revenue Recognition
12 Months Ended
Dec. 31, 2021
Revenue from Contract with Customer [Abstract]  
Revenue Recognition REVENUE RECOGNITION
We disaggregate our revenue from contracts with customers by end market and product, as we believe it best depicts how the nature, amount, timing and uncertainty of our revenue and cash flows are affected by economic factors. The following tables present our revenues disaggregated by end market and product (in thousands):
Years ended December 31,
202120202019
Residential new construction$1,500,750 76 %$1,243,498 75 %$1,138,475 75 %
Repair and remodel133,986 %106,784 %98,771 %
Commercial333,914 17 %302,943 18 %274,383 18 %
Net revenues$1,968,650 100 %$1,653,225 100 %$1,511,629 100 %

Years ended December 31,
202120202019
Insulation$1,262,628 64 %$1,058,316 64 %$970,070 64 %
Shower doors, shelving and mirrors138,797 %117,131 %105,745 %
Waterproofing130,924 %122,962 %112,075 %
Garage doors108,675 %93,516 %89,959 %
Rain gutters86,406 %62,672 %49,788 %
Fireproofing/firestopping59,381 %49,648 %41,845 %
Window blinds50,255 %46,984 %41,641 %
Other building products131,584 %101,996 %100,506 %
Net revenues$1,968,650 100 %$1,653,225 100 %$1,511,629 100 %
Contract Assets and Liabilities
Our contract assets consist of unbilled amounts typically resulting from sales under contracts when the cost-to-cost method of revenue recognition is utilized and revenue recognized, based on costs incurred, exceeds the amount billed to the customer. Our contract assets are recorded in other current assets in our Consolidated Balance Sheets. Our contract liabilities consist of customer deposits and billings in excess of revenue recognized, based on costs incurred and are included in other current liabilities in our Consolidated Balance Sheets.

Contract assets and liabilities related to our uncompleted contracts and customer deposits were as follows (in thousands):
As of December 31,
20212020
Contract assets$32,679 $24,334 
Contract liabilities(14,153)(8,965)

Uncompleted contracts were as follows (in thousands):
As of December 31,
20212020
Costs incurred on uncompleted contracts$206,050 $169,544 
Estimated earnings106,163 90,737 
Total312,213 260,281 
Less: Billings to date285,978 240,665 
Net under billings$26,235 $19,616 

Net under billings were as follows (in thousands):
As of December 31,
20212020
Costs and estimated earnings in excess of billings on uncompleted contracts (contract assets)$32,679 $24,334 
Billings in excess of costs and estimated earnings on uncompleted contracts (contract liabilities)(6,444)(4,718)
Net under billings$26,235 $19,616 

The difference between contract assets and contract liabilities as of December 31, 2021 compared to December 31, 2020 is primarily the result of timing differences between our performance of obligations under contracts and customer payments and billings. During the year ended December 31, 2021, we recognized $8.7 million of revenue that was included in the contract liability balance at December 31, 2020. We did not recognize any impairment losses on our receivables and contract assets during the years ended December 31, 2021 and 2020.

Remaining performance obligations represent the transaction price of contracts for which work has not been performed and excludes unexercised contract options and potential modifications. As of December 31, 2021, the aggregate amount of the transaction price allocated to remaining uncompleted contracts was $143.2 million. We expect to satisfy remaining performance obligations and recognize revenue on substantially all of these uncompleted contracts over the next 18 months.