XML 25 R11.htm IDEA: XBRL DOCUMENT v3.20.4
Revenue Recognition
12 Months Ended
Dec. 31, 2020
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,
202020192018
Residential new construction$1,243,498 75 %$1,138,475 75 %$1,026,473 77 %
Repair and remodel106,784 %98,771 %89,977 %
Commercial302,943 18 %274,383 18 %219,982 16 %
Net revenues$1,653,225 100 %$1,511,629 100 %$1,336,432 100 %

Years ended December 31,
202020192018
Insulation$1,058,316 64 %$970,070 64 %$876,118 66 %
Waterproofing122,962 %112,075 %97,683 %
Shower doors, shelving and mirrors117,131 %105,745 %90,352 %
Garage doors93,516 %89,959 %79,539 %
Rain gutters62,672 %49,788 %44,203 %
Fireproofing/firestopping (1)
49,648 %41,845 %36,589 %
Window blinds46,984 %41,641 %28,981 %
Other building products101,996 %100,506 %82,967 %
Net revenues$1,653,225 100 %$1,511,629 100 %$1,336,432 100 %
(1) Combined with "Other building products" in previous years but shown separately to conform with updated disclosures
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,
20202019
Contract assets$24,334 $22,138 
Contract liabilities(8,965)(8,888)
Uncompleted contracts were as follows (in thousands):
As of December 31,
20202019
Costs incurred on uncompleted contracts$169,544 $110,818 
Estimated earnings90,737 61,185 
Total260,281 172,003 
Less: Billings to date240,665 155,599 
Net under billings$19,616 $16,404 

Net under billings were as follows (in thousands):
As of December 31,
20202019
Costs and estimated earnings in excess of billings on uncompleted contracts (contract assets)$24,334 $22,138 
Billings in excess of costs and estimated earnings on uncompleted contracts (contract liabilities)(4,718)(5,734)
Net under billings$19,616 $16,404 

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

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, 2020, the aggregate amount of the transaction price allocated to remaining uncompleted contracts was $78.5 million. We expect to satisfy remaining performance obligations and recognize revenue on substantially all of these uncompleted contracts over the next 18 months.