XML 40 R29.htm IDEA: XBRL DOCUMENT
v3.25.2

Segment Information (Tables) | 6 Months Ended
--- | ---
Jun. 30, 2025
Segment Reporting [Abstract] |
Summary of information about reportable segments | The following tables present information about our reportable segments (in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ |  | Mechanical Segment |  | Electrical Segment |  | Corporate |  | Consolidated
Total assets at June 30, 2025 | ​ | $ | 3,633,522 | ​ | $ | 1,094,984 | ​ | $ | 335,223 | ​ | $ | 5,063,729
Total assets at December 31, 2024 | ​ | $ | 3,162,677 | ​ | $ | 985,006 | ​ | $ | 563,405 | ​ | $ | 4,711,088
​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Three Months Ended June 30, 2025
​ |  | Mechanical Segment |  | Electrical Segment |  | Corporate |  | Consolidated
Revenue | ​ | $ | 1,638,672 | ​ | $ | 534,647 | ​ | $ | — | ​ | $ | 2,173,319
Cost of services | ​ | ​ | 1,264,066 | ​ | ​ | 399,356 | ​ | ​ | — | ​ | ​ | 1,663,422
Gross profit | ​ | ​ | 374,606 | ​ | ​ | 135,291 | ​ | ​ | — | ​ | ​ | 509,897
Selling, general and administrative expenses | ​ | ​ | 137,074 | ​ | ​ | 55,235 | ​ | ​ | 18,157 | ​ | ​ | 210,466
Gain on sale of assets | ​ | ​ | (371) | ​ | ​ | (71) | ​ | ​ | — | ​ | ​ | (442)
Operating income | ​ | $ | 237,903 | ​ | $ | 80,127 | ​ | $ | (18,157) | ​ | $ | 299,873
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Amortization of identifiable intangible assets | ​ | $ | 14,266 | ​ | $ | 5,525 | ​ | $ | — | ​ | $ | 19,791
Depreciation expense | ​ | $ | 12,093 | ​ | $ | 2,458 | ​ | $ | 305 | ​ | $ | 14,856
Capital expenditures | ​ | $ | 24,879 | ​ | $ | 6,093 | ​ | $ | 301 | ​ | $ | 31,273
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Three Months Ended June 30, 2024
​ |  | Mechanical Segment |  | Electrical Segment |  | Corporate |  | Consolidated
Revenue | ​ | $ | 1,451,679 | ​ | $ | 358,611 | ​ | $ | — | ​ | $ | 1,810,290
Cost of services | ​ | ​ | 1,172,707 | ​ | ​ | 273,987 | ​ | ​ | — | ​ | ​ | 1,446,694
Gross profit | ​ | ​ | 278,972 | ​ | ​ | 84,624 | ​ | ​ | — | ​ | ​ | 363,596
Selling, general and administrative expenses | ​ | ​ | 124,628 | ​ | ​ | 41,138 | ​ | ​ | 13,771 | ​ | ​ | 179,537
Gain on sale of assets | ​ | ​ | (356) | ​ | ​ | (255) | ​ | ​ | — | ​ | ​ | (611)
Operating income | ​ | $ | 154,700 | ​ | $ | 43,741 | ​ | $ | (13,771) | ​ | $ | 184,670
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Amortization of identifiable intangible assets | ​ | $ | 21,365 | ​ | $ | 5,525 | ​ | $ | — | ​ | $ | 26,890
Depreciation expense | ​ | $ | 9,705 | ​ | $ | 1,804 | ​ | $ | 281 | ​ | $ | 11,790
Capital expenditures | ​ | $ | 18,227 | ​ | $ | 3,893 | ​ | $ | 1,264 | ​ | $ | 23,384
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Six Months Ended June 30, 2025
​ |  | Mechanical Segment |  | Electrical Segment |  | Corporate |  | Consolidated
Revenue | ​ | $ | 3,040,887 | ​ | $ | 963,718 | ​ | $ | — | ​ | $ | 4,004,605
Cost of services | ​ | ​ | 2,361,762 | ​ | ​ | 729,530 | ​ | ​ | — | ​ | ​ | 3,091,292
Gross profit | ​ | ​ | 679,125 | ​ | ​ | 234,188 | ​ | ​ | — | ​ | ​ | 913,313
Selling, general and administrative expenses | ​ | ​ | 269,344 | ​ | ​ | 99,281 | ​ | ​ | 36,715 | ​ | ​ | 405,340
Gain on sale of assets | ​ | ​ | (723) | ​ | ​ | (275) | ​ | ​ | — | ​ | ​ | (998)
Operating income | ​ | $ | 410,504 | ​ | $ | 135,182 | ​ | $ | (36,715) | ​ | $ | 508,971
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Amortization of identifiable intangible assets | ​ | $ | 28,856 | ​ | $ | 11,050 | ​ | $ | — | ​ | $ | 39,906
Depreciation expense | ​ | $ | 23,497 | ​ | $ | 4,761 | ​ | $ | 608 | ​ | $ | 28,866
Capital expenditures | ​ | $ | 43,298 | ​ | $ | 9,632 | ​ | $ | 551 | ​ | $ | 53,481
​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Six Months Ended June 30, 2024
​ |  | Mechanical Segment |  | Electrical Segment |  | Corporate |  | Consolidated
Revenue | ​ | $ | 2,636,688 | ​ | $ | 710,618 | ​ | $ | — | ​ | $ | 3,347,306
Cost of services | ​ | ​ | 2,140,004 | ​ | ​ | 546,343 | ​ | ​ | — | ​ | ​ | 2,686,347
Gross profit | ​ | ​ | 496,684 | ​ | ​ | 164,275 | ​ | ​ | — | ​ | ​ | 660,959
Selling, general and administrative expenses | ​ | ​ | 235,610 | ​ | ​ | 75,018 | ​ | ​ | 31,632 | ​ | ​ | 342,260
Gain on sale of assets | ​ | ​ | (930) | ​ | ​ | (501) | ​ | ​ | — | ​ | ​ | (1,431)
Operating income | ​ | $ | 262,004 | ​ | $ | 89,758 | ​ | $ | (31,632) | ​ | $ | 320,130
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Amortization of identifiable intangible assets | ​ | $ | 39,459 | ​ | $ | 11,344 | ​ | $ | — | ​ | $ | 50,803
Depreciation expense | ​ | $ | 18,933 | ​ | $ | 3,524 | ​ | $ | 587 | ​ | $ | 23,044
Capital expenditures | ​ | $ | 38,169 | ​ | $ | 8,272 | ​ | $ | 1,895 | ​ | $ | 48,336
​

X
- Definition Tabular disclosure of the profit or loss and total assets for each reportable segment. An entity discloses certain information on each reportable segment if the amounts (a) are included in the measure of segment profit or loss reviewed by the chief operating decision maker or (b) are otherwise regularly provided to the chief operating decision maker, even if not included in that measure of segment profit or loss. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 25 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-25 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 22 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22 Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 30 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30 + Details
Name: | us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References No definition available. + Details
Name: | us-gaap_SegmentReportingAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration