XML 33 R19.htm IDEA: XBRL DOCUMENT
v3.25.4

Operating Segments | 12 Months Ended
--- | ---
Dec. 31, 2025
Segment Reporting [Abstract] |
Operating Segments | Operating Segments As discussed in Note 1, the Company operates in two segments (i) ODR, in which the Company performs owner direct projects and/or provides maintenance or service primarily on MEPC systems, and specialty contracting projects to existing buildings direct to, or assigned by, building owners or operators, and (ii) GCR, in which the Company generally manages new construction or renovation projects that involve primarily MEPC systems awarded to the Company by general contractors or construction managers. Segment information is prepared on the same basis the Company’s Chief Operating Decision Maker (“CODM”) reviews operating results for the purposes of allocating resources and assessing performance. The Company's CODM is comprised of its President and Chief Executive Officer and Executive Vice President and Chief Financial Officer. In accordance with ASC Topic 280 – Segment Reporting, the Company has elected to aggregate all of the ODR work performed at its branches into one ODR reportable segment and all of the GCR work performed at its branches into one GCR reportable segment. All transactions between segments are eliminated in consolidation. All of the Company’s identifiable assets are located in the United States, which is where the Company is domiciled. The Company does not have sales outside of the United States. For the years ended December 31, 2025, 2024 and 2023, no ODR or GCR segment customers accounted for 10% or more of the Company’s consolidated total revenue. Consolidated segment information for the periods presented is as follows:
| For the Years Ended December 31,
(in thousands) | 2025 |  | 2024 |  | 2023
Statement of Operations Data: |  |  |  |  |
Revenue: |  |  |  |  |
ODR | $ | 485,690 |  |  | $ | 345,500 |  |  | $ | 261,958 |
GCR | 161,114 |  |  | 173,281 |  |  | 254,392 |
Total revenue | 646,804 |  |  | 518,781 |  |  | 516,350 |
Gross profit: |  |  |  |  |
ODR | 129,876 |  |  | 107,775 |  |  | 76,090 |
GCR | 39,438 |  |  | 36,506 |  |  | 43,200 |
Total gross profit | 169,314 |  |  | 144,281 |  |  | 119,290 |
Selling, general and administrative (1) | 109,518 |  |  | 97,199 |  |  | 87,397 |
Acquisition-related retention expense and contingent consideration | 1,985 |  |  | 3,770 |  |  | 729 |
Amortization of intangibles | 8,357 |  |  | 4,688 |  |  | 1,880 |
Operating income | $ | 49,454 |  |  | $ | 38,624 |  |  | $ | 29,284 |
Other (expenses) income |  |  |  |  |
Interest expense | (3,133) |  |  | (1,869) |  |  | (2,046) |
Interest income | 815 |  |  | 2,227 |  |  | 1,217 |
Loss on early debt extinguishment | — |  |  | — |  |  | (311) |
(Loss) gain on change in fair value of interest rate swap | (191) |  |  | 34 |  |  | (124) |
Gain on disposition of property and equipment | 1,684 |  |  | 950 |  |  | 80 |
Total unallocated amounts | (825) |  |  | 1,342 |  |  | (1,184) |
Total consolidated income before income taxes | $ | 48,629 |  |  | $ | 39,966 |  |  | $ | 28,100 |
(1) Included within selling, general and administrative expenses was $7.0 million, $5.8 million and $4.9 million of non-cash stock-based compensation expense for the years ended December 31, 2025, 2024 and 2023, respectively. The Company does not identify capital expenditures and total assets by segment in its internal financial reports due in part to the shared use of a centralized fleet of vehicles and specialized equipment.

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

X
- Definition The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 21 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-21 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 21 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-21 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 32 -Subparagraph (e) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 31 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-31 Reference 5: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 15 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-15 Reference 6: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 42 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-42 Reference 7: http://www.xbrl.org/2003/role/exampleRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 55 -Paragraph 48 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482785/280-10-55-48 Reference 8: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 32 -Subparagraph (f) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32 Reference 9: http://www.xbrl.org/2003/role/disclosureRef -Topic 270 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 1 -Subparagraph (i) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1 Reference 10: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 32 -Subparagraph (ee) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32 Reference 11: http://fasb.org/us-gaap/role/ref/otherTransitionRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 32 -Subparagraph (d) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32 Reference 12: http://www.xbrl.org/2003/role/exampleRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 55 -Paragraph 54 -Subparagraph (d) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482785/280-10-55-54 Reference 13: http://www.xbrl.org/2003/role/exampleRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 55 -Paragraph 47 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482785/280-10-55-47 Reference 14: http://www.xbrl.org/2003/role/exampleRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 55 -Paragraph 54 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482785/280-10-55-54 Reference 15: http://www.xbrl.org/2003/role/exampleRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 55 -Paragraph 47 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482785/280-10-55-47 Reference 16: http://www.xbrl.org/2003/role/exampleRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 55 -Paragraph 54 -Subparagraph (e) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482785/280-10-55-54 Reference 17: http://www.xbrl.org/2003/role/exampleRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 55 -Paragraph 47 -Subparagraph (d) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482785/280-10-55-47 Reference 18: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 22 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22 Reference 19: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 34 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-34 Reference 20: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 26C -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-26C Reference 21: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 26B -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-26B Reference 22: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 40 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-40 Reference 23: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -Name Accounting Standards Codification -Publisher FASB -URI https://asc.fasb.org/280/tableOfContent Reference 24: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 26 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-26 Reference 25: http://www.xbrl.org/2003/role/disclosureRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 41 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-41 + Details
Name: | us-gaap_SegmentReportingDisclosureTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration