Condensed Consolidated Statements of Income (Unaudited) - USD ($) shares in Thousands, $ in Thousands |
3 Months Ended | 9 Months Ended | ||
|---|---|---|---|---|
Sep. 27, 2019 |
Sep. 28, 2018 |
Sep. 27, 2019 |
Sep. 28, 2018 |
|
| Income Statement [Abstract] | ||||
| Revenue | $ 359,854 | $ 308,095 | $ 1,017,371 | $ 949,744 |
| Cost of revenue | 325,537 | 278,964 | 921,685 | 865,078 |
| Selling, general and administrative expenses | 19,934 | 15,125 | 59,697 | 48,990 |
| Operating income | 14,383 | 14,006 | 35,989 | 35,676 |
| Interest expense, net | (1,907) | (1,314) | (4,811) | (3,619) |
| Income from operations before income taxes | 12,476 | 12,692 | 31,178 | 32,057 |
| Income tax expense | 3,094 | 2,826 | 7,088 | 6,884 |
| Net income | $ 9,382 | $ 9,866 | $ 24,090 | $ 25,173 |
| Earnings per share | ||||
| Basic (in dollars per share) | $ 0.82 | $ 0.88 | $ 2.11 | $ 2.25 |
| Diluted (in dollars per share) | $ 0.80 | $ 0.86 | $ 2.08 | $ 2.21 |
| Weighted average common shares outstanding - basic (in shares) | 11,506 | 11,248 | 11,420 | 11,210 |
| Weighted average common shares outstanding - diluted (in shares) | 11,678 | 11,406 | 11,566 | 11,380 |