XML 46 R35.htm IDEA: XBRL DOCUMENT
v3.25.2

Reportable Segments (Tables) | 6 Months Ended
--- | ---
Jun. 30, 2025
Reportable Segments |
Schedule of revenue and gross profit by segment | Operating performance by segment for the three months ended June 30, 2025, and 2024 was as follows (in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | For the three months ended June 30, 2025
​ | ​ | Utilities | ​ | % of Segment Revenue | ​ | Energy | ​ | ​ | % of Segment Revenue | ​ | Corporate and non-allocated costs | Consolidated | ​ | ​ | % of Consolidated Revenue
Revenue | ​ | $ | 693,021 | ​ | ​ | — | ​ | $ | 1,236,807 | ​ | ​ | — | ​ | $ | (39,083) | (1) | $ | 1,890,745 | ​ | ​ | — | ​
Cost of revenue | ​ | ​ | 595,476 | ​ | ​ | 85.9% | ​ | ​ | 1,102,616 | ​ | ​ | 89.2% | ​ | ​ | (39,083) | (1) | ​ | 1,659,009 | ​ | ​ | 87.7% | ​
Gross profit | ​ | ​ | 97,545 | ​ | ​ | 14.1% | ​ | ​ | 134,191 | ​ | ​ | 10.8% | ​ | ​ | — | ​ | ​ | 231,736 | ​ | ​ | 12.3% | ​
Selling, general, and administrative expenses | ​ | ​ | 31,968 | ​ | ​ | 4.6% | ​ | ​ | 41,617 | ​ | ​ | 3.4% | ​ | ​ | 30,964 | ​ | ​ | 104,549 | ​ | ​ | 5.5% | ​
Transaction and related costs | ​ | ​ | — | ​ | ​ | ​ | ​ | ​ | — | ​ | ​ | ​ | ​ | ​ | 543 | ​ | ​ | 543 | ​ | ​ | ​ | ​
Operating income | ​ | $ | 65,577 | ​ | ​ | 9.5% | ​ | $ | 92,574 | ​ | ​ | 7.5% | ​ | $ | (31,507) | ​ | $ | 126,644 | ​ | ​ | 6.7% | ​
| (1) | Represents intersegment revenue and cost of revenue of $39.1 million in the Utilities segment eliminated in our Condensed Consolidated Statements of Income.
​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | For the three months ended June 30, 2024
​ |  | Utilities |  | % of Segment Revenue | ​ | Energy | ​ | % of Segment Revenue | ​ | Corporate and non-allocated costs | ​ | Consolidated | ​ | ​ | % of Consolidated Revenue
Revenue | ​ | $ | 620,798 |  | ​ | — | ​ | $ | 973,492 | ​ | ​ | — | ​ | $ | (30,575) | (1) | $ | 1,563,715 | ​ | ​ | —
Cost of revenue | ​ | ​ | 556,732 | ​ | ​ | 89.7% | ​ | ​ | 850,848 | ​ | ​ | 87.4% | ​ | ​ | (30,575) | (1) | ​ | 1,377,005 | ​ | ​ | 88.1%
Gross profit | ​ | ​ | 64,066 | ​ | ​ | 10.3% | ​ | ​ | 122,644 | ​ | ​ | 12.6% | ​ | ​ | — | ​ | ​ | 186,710 | ​ | ​ | 11.9%
Selling, general, and administrative expenses | ​ | ​ | 29,419 | ​ | ​ | 4.7% | ​ | ​ | 37,863 | ​ | ​ | 3.9% | ​ | ​ | 32,836 | ​ | ​ | 100,118 | ​ | ​ | 6.4%
Transaction and related costs | ​ | ​ | — | ​ | ​ | ​ | ​ | ​ | — | ​ | ​ | ​ | ​ | ​ | 522 | ​ | ​ | 522 | ​ | ​ | ​
Operating income | ​ | $ | 34,647 |  | ​ | 5.6% | ​ | $ | 84,781 | ​ | ​ | 8.7% | ​ | $ | (33,358) | ​ | $ | 86,070 | ​ | ​ | 5.5%
| (1) | Represents intersegment revenue and cost of revenue of $30.6 million in the Utilities segment eliminated in our Condensed Consolidated Statements of Income.
​ Operating performance by segment for the six months ended June 30, 2025, and 2024 was as follows (in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | For the six months ended June 30, 2025
​ |  | Utilities | ​ | % of Segment Revenue | ​ | Energy | ​ | % of Segment Revenue | ​ | Corporate and non-allocated costs | ​ | Consolidated | ​ | % of Consolidated Revenue
Revenue | ​ | $ | 1,256,428 | ​ | ​ | — | ​ | $ | 2,345,149 | ​ | ​ | — | ​ | $ | (62,719) | (1) | $ | 3,538,858 | ​ | ​ | —
Cost of revenue | ​ | ​ | 1,107,305 | ​ | ​ | 88.1% | ​ | ​ | 2,091,879 | ​ | ​ | 89.2% | ​ | ​ | (62,719) | (1) | ​ | 3,136,465 | ​ | ​ | 88.6%
Gross profit | ​ | ​ | 149,123 | ​ | ​ | 11.9% | ​ | ​ | 253,270 | ​ | ​ | 10.8% | ​ | ​ | — | ​ | ​ | 402,393 | ​ | ​ | 11.4%
Selling, general, and administrative expenses | ​ | ​ | 65,486 | ​ | ​ | 5.2% | ​ | ​ | 81,835 | ​ | ​ | 3.5% | ​ | ​ | 56,730 | ​ | ​ | 204,051 | ​ | ​ | 5.8%
Transaction and related costs | ​ | ​ | — | ​ | ​ | ​ | ​ | ​ | — | ​ | ​ | ​ | ​ | ​ | 1,334 | ​ | ​ | 1,334 | ​ | ​ | ​
Operating income | ​ | $ | 83,637 | ​ | ​ | 6.7% | ​ | $ | 171,435 | ​ | ​ | 7.3% | ​ | $ | (58,064) | ​ | $ | 197,008 | ​ | ​ | 5.6%
| (1) | Represents intersegment revenue and cost of revenue of $62.7 million in the Utilities segment eliminated in our Condensed Consolidated Statements of Income.
​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | For the six months ended June 30, 2024
​ |  | Utilities |  | % of Segment Revenue | ​ | Energy | ​ | % of Segment Revenue | ​ | Corporate and non-allocated costs | ​ | Consolidated | ​ | % of Consolidated Revenue
Revenue | ​ | $ | 1,108,722 |  | ​ | — | ​ | $ | 1,921,070 | ​ | ​ | — | ​ | $ | (53,370) | (1) | $ | 2,976,422 | ​ | ​ | —
Cost of revenue | ​ | ​ | 1,015,177 | ​ | ​ | 91.6% | ​ | ​ | 1,694,529 | ​ | ​ | 88.2% | ​ | ​ | (53,370) | (1) | ​ | 2,656,336 | ​ | ​ | 89.2%
Gross profit | ​ | ​ | 93,545 | ​ | ​ | 8.4% | ​ | ​ | 226,541 | ​ | ​ | 11.8% | ​ | ​ | — | ​ | ​ | 320,086 | ​ | ​ | 10.8%
Selling, general, and administrative expenses | ​ | ​ | 58,697 | ​ | ​ | 5.3% | ​ | ​ | 75,178 | ​ | ​ | 3.9% | ​ | ​ | 54,831 | ​ | ​ | 188,706 | ​ | ​ | 6.3%
Transaction and related costs | ​ | ​ | — | ​ | ​ | ​ | ​ | ​ | — | ​ | ​ | ​ | ​ | ​ | 1,072 | ​ | ​ | 1,072 | ​ | ​ | ​
Operating income | ​ | $ | 34,848 |  | ​ | 3.1% | ​ | $ | 151,363 | ​ | ​ | 7.9% | ​ | $ | (55,903) | ​ | $ | 130,308 | ​ | ​ | 4.4%
| (1) | Represents intersegment revenue and cost of revenue of $53.4 million in the Utilities segment eliminated in our Condensed Consolidated Statements of Income.
Schedule of segment operating income | ​ Reconciliation of operating income to income before provision for income taxes is as follows (in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Three Months Ended June 30, | ​ | Six Months Ended June 30,
​ |  | 2025 | ​ | 2024 | ​ | 2025 | ​ | 2024
Operating income |  | $ | 126,644 | ​ | $ | 86,070 | ​ | $ | 197,008 | ​ | $ | 130,308
Foreign exchange (loss) gain, net | ​ | ​ | (365) | ​ | ​ | 761 | ​ | ​ | (647) | ​ | ​ | 1,321
Other income (expense), net | ​ | ​ | 32 | ​ | ​ | 81 | ​ | ​ | 49 | ​ | ​ | (45)
Interest expense, net | ​ | ​ | (7,552) | ​ | ​ | (17,133) | ​ | ​ | (15,342) | ​ | ​ | (35,125)
Income before provision for income taxes | ​ | $ | 118,759 | ​ | $ | 69,779 | ​ | $ | 181,068 | ​ | $ | 96,459
​
Schedule of depreciation and amortization by segment | Depreciation and amortization expense by segment for the three and six months ended June 30, 2025, and 2024 was as follows (in thousands):

X
- Definition Tabular disclosure of the reconciliation of profit (loss) from reportable segments to the consolidated income (loss) before income tax expense (benefit) and discontinued operations. Includes, but is not limited to, reconciliation after income tax if income tax is allocated to the reportable segment. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 31 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-31 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 30 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30 + Details
Name: | us-gaap_ReconciliationOfOperatingProfitLossFromSegmentsToConsolidatedTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of reconciliation of other items from reportable segments to their consolidated amount. Excludes reconciliation of revenue, profit (loss), and assets. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 31 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-31 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 30 -Subparagraph (d) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30 + Details
Name: | us-gaap_ReconciliationOfOtherSignificantReconcilingItemsFromSegmentsToConsolidatedTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

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