Consolidated Statements of Income - USD ($) shares in Thousands, $ in Thousands |
12 Months Ended | ||
|---|---|---|---|
Dec. 31, 2021 |
Dec. 31, 2020 |
Dec. 31, 2019 |
|
| Income Statement [Abstract] | |||
| Revenue | $ 1,783,665 | $ 1,395,529 | $ 1,382,525 |
| Cost of revenue | 1,623,245 | 1,271,375 | 1,254,560 |
| Selling, general, and administrative expenses | 98,400 | 80,679 | 78,316 |
| Operating income | 62,020 | 43,475 | 49,649 |
| Interest expense, net | (7,985) | (4,793) | (6,470) |
| Income from operations before income taxes | 54,035 | 38,682 | 43,179 |
| Income tax expense | 8,307 | 1,731 | 10,003 |
| Net income | $ 45,728 | $ 36,951 | $ 33,176 |
| Earnings per share | |||
| Basic (in dollars per share) | $ 3.91 | $ 3.19 | $ 2.90 |
| Diluted (in dollars per share) | $ 3.86 | $ 3.14 | $ 2.86 |
| Weighted average common shares outstanding - basic (in shares) | 11,705 | 11,599 | 11,444 |
| Weighted average common shares outstanding - diluted (in shares) | 11,836 | 11,751 | 11,612 |