Pay vs Performance Disclosure - USD ($) | 12 Months Ended |
Dec. 31, 2022 | Dec. 31, 2021 | Dec. 31, 2020 |
Pay vs Performance Disclosure [Table] | | | |
Pay vs Performance [Table Text Block] | Year Summary Compensation Table total for PEO (1) Compensation Actually Paid ("CAP") to PEO (1)(2)(6) Average Summary Compensation Table total for non-PEO NEOs (3) Average CAP to non-PEO NEOs (2)(3)(7) Value of initial fixed $100 investment based on: Net income (in thousands) Income before income taxes (in thousands) (5) Total shareholder return (4) Peer group total shareholder return (4) 2022 $ 4,414,263 $ 2,445,181 $ 1,027,589 $ 765,385 $ 60 $ 123 $ 34,630 $ 45,082 2021 $ 4,405,773 $ 1,424,534 $ 986,045 $ 593,330 $ 47 $ 142 $ 45,863 $ 61,823 2020 $ 4,182,274 $ 4,908,914 $ 1,254,008 $ 1,535,216 $ 116 $ 114 $ 98,682 $ 129,186 | | |
Company Selected Measure Name | Income before Income Taxes | | |
Named Executive Officers, Footnote [Text Block] | Our CEO, Theodore Wahl, is listed in the table as the principal executive officer ("PEO") for each year.The non-PEO NEOs included in the calculation for average summary compensation and compensation actually paid for each applicable year are the following: • 2022: John C. Shea, Andrew W. Kush, Patrick J. Orr, and Andrew M. Brophy • 2021: John C. Shea, Andrew W. Kush, Patrick J. Orr, Jason J. Bundick, and Andrew M. Brophy • 2020: John C. Shea, Michael E. McBryan (in his role as Executive Vice President, Chief Revenue Officer & Director), Andrew W. Kush, and Jason J. Bundick | | |
PEO Total Compensation Amount | $ 4,414,263 | $ 4,405,773 | $ 4,182,274 |
PEO Actually Paid Compensation Amount | $ 2,445,181 | 1,424,534 | 4,908,914 |
Adjustment To PEO Compensation, Footnote [Text Block] | Below is the reconciliation of the Summary Compensation Table to Compensation Actually Paid for the PEO: Reconciliation of Summary Compensation to CAP to Principal Executive Officer 2022 2021 2020 Summary Compensation Table $ 4,414,263 $ 4,405,773 $ 4,182,274 Less: Equity awards included in Summary Compensation Table (2,951,289) (3,092,728) (2,618,792) Add: Year-end fair value of equity awards granted during current year that are outstanding and unvested at year-end 1,695,607 1,322,617 2,576,882 Add: Change in fair value of equity awards granted in prior years that are outstanding and unvested at year-end (961,109) (1,452,692) 526,740 Add: Change in fair value during current year of equity awards granted in prior years that vested in the current year 10,543 10,543 2,750 Add: Fair value on vesting date for current year equity grants 74,167 62,953 65,323 Less: Fair value at end of prior year for any stock awards which were forfeited during current year — — — Add: Dollar value of any dividends, dividend equivalents, or other earnings paid on stock or option awards 162,999 168,068 173,737 Total Compensation Actually Paid (CAP): $ 2,445,181 $ 1,424,534 $ 4,908,914 | | |
Non-PEO NEO Average Total Compensation Amount | $ 1,027,589 | 986,045 | 1,254,008 |
Non-PEO NEO Average Compensation Actually Paid Amount | $ 765,385 | 593,330 | 1,535,216 |
Adjustment to Non-PEO NEO Compensation Footnote [Text Block] | Below is the reconciliation of the Summary Compensation Table to Compensation Actually Paid to the non-PEO NEOs: Reconciliation of Summary Compensation to CAP to Non-Principal Executive Officer Named Executive Officers 2022 2021 2020 Summary Compensation Table $ 1,027,589 $ 986,045 $ 1,254,008 Less: Equity awards included in Summary Compensation Table (421,208) (404,679) (427,318) Add: Year-end fair value of equity awards granted during current year that are outstanding and unvested at year-end 242,410 187,532 534,983 Add: Change in fair value of equity awards granted in prior years that are outstanding and unvested at year-end (127,340) (218,593) 110,687 Add: Change in fair value during current year of equity awards granted in prior years that vested in the current year 1,272 1,429 790 Add: Fair value on vesting date for current year equity grants 20,827 18,401 28,039 Less: Fair value at end of prior year for any stock awards which were forfeited during current year — — — Add: Dollar value of any dividends, dividend equivalents, or other earnings paid on stock or option awards 21,835 23,195 34,027 Total Compensation Actually Paid (CAP): $ 765,385 $ 593,330 $ 1,535,216 | | |
Compensation Actually Paid vs. Total Shareholder Return [Text Block] | Below is a comparison of ratios of compensation included in the Summary Compensation Table to the compensation actually paid calculation for the PEO and the non-PEO Named Executive Officers to TSR: PEO Compensation as a multiple of TSR Average Other NEO Compensation as a multiple of TSR Year Summary Compensation Compensation Actually Paid Summary Compensation Compensation Actually Paid 2022 163.7 90.7 38.1 28.4 2021 85.2 27.6 19.1 11.5 2020 46.2 54.2 13.9 17.0 | | |
Compensation Actually Paid vs. Net Income [Text Block] | Below is a comparison of ratios of compensation included in the Summary Compensation Table to the compensation actually paid calculation for the PEO and the non-PEO Named Executive Officers to net income: PEO Compensation as a percentage of net income Average Other NEO Compensation as a percentage of net income Year Summary Compensation Compensation Actually Paid Summary Compensation Compensation Actually Paid 2022 12.7 % 7.1 % 3.0 % 2.2 % 2021 9.6 % 3.1 % 2.1 % 1.3 % 2020 4.2 % 5.0 % 1.3 % 1.6 % | | |
Compensation Actually Paid vs. Company Selected Measure [Text Block] | Below is a comparison of ratios of compensation included in the Summary Compensation Table to the compensation actually paid calculation for the PEO and the non-PEO Named Executive Officers to income before income taxes: PEO Compensation as a percentage of income before income taxes Average Other NEO Compensation as a percentage of income before income taxes Year Summary Compensation Compensation Actually Paid Summary Compensation Compensation Actually Paid 2022 9.8 % 5.4 % 2.3 % 1.7 % 2021 7.1 % 2.3 % 1.6 % 1.0 % 2020 3.2 % 3.8 % 1.0 % 1.2 % | | |
Tabular List [Table Text Block] | Company Selected Measures Income before income taxes Total Shareholder Return | | |
Total Shareholder Return Amount | $ 60 | 47 | 116 |
Peer Group Total Shareholder Return Amount | 123 | 142 | 114 |
Net Income (Loss) | $ 34,630,000 | $ 45,863,000 | $ 98,682,000 |
Company Selected Measure Amount | 45,082,000 | 61,823,000 | 129,186,000 |
PEO Name | Theodore Wahl | | |
Additional 402(v) Disclosure [Text Block] | Compensation actually paid is defined in Item 402(v)(2)(iii) of Regulation S-K. Reconciliation of the amounts included in the Summary Compensation Table to compensation actually paid is provided in the "Narrative Disclosure to Pay Versus Performance Table" section below.Total shareholder return (TSR) is calculated based on the return of $100 invested three years prior to the applicable year-end date in stock or index, including reinvestment of dividends. We have not defined a peer group based on either industry classification or financial characteristics. We believe the Company is unique in its service offerings and customer base, and among its closest industry peers, it is unique in size and financial profile. We opted to utilize the S&P Midcap 400 index on our Form 10-K total return chart to compare the Company performance to issuers with similar market capitalization. In addition, we use the S&P Midcap 400 index as our relative TSR peer group applicable to performance stock unit awards. Our company-selected measure is Income before Income Taxes. Our Consolidated Statements of Comprehensive Income included on our Form 10-K include details of how this is calculated. Differences in the calculations of compensation in the summary compensation and the compensation actually paid are driven primarily on the determination of fair value used to calculate GAAP stock compensation expense and the SEC definition in the compensation actually paid calculation and the timing of equity awards issued during the years ended December 31, 2022, 2021, and 2020. For each of the periods included in the CAP table, we have granted the vast majority of our equity awards to the NEOs, including the PEO, and other employees during the first quarter of each fiscal year. Expense for GAAP purposes (which is included in the Summary Compensation Table) for these grants is measured at fair value at the grant date using the current stock price and other inputs that are determined at the grant date, which is then recorded as straight-line stock compensation expense over the vesting period for each grant. In the CAP calculation, the fair value of each equity award is revalued at the end of each fiscal year (instead of the grant date) or upon vesting. For unvested RSUs, we calculated the fair value of outstanding units as the total number of unvested shares times the year-end stock price. For unvested stock options, we calculated the fair value of outstanding unvested options using an updated Black-Scholes model with inputs updated for each respective year-end date. For unvested PSUs, we calculated the fair value of unvested units using an updated Monte-Carlo model with inputs updated for each respective year-end date. Changes in fair value from the grant date, or the previous year-end, to the end of each year in the table were primarily driven by changes in our stock price. No changes were made to the valuation methods or models used in calculating the fair value as of year-end versus each grant date, and no significant changes were made to assumptions used in the models. As equity awards are a significant portion of the compensation package provided to our NEOs, our CAP may fluctuate significantly from period to period based on changes in our stock price. | | |
Measure [Axis]: 1 | | | |
Pay vs Performance Disclosure [Table] | | | |
Measure Name | Income before income taxes | | |
Measure [Axis]: 2 | | | |
Pay vs Performance Disclosure [Table] | | | |
Measure Name | Total Shareholder Return | | |
PEO [Member] | Stock Award Adjustments [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | $ (2,951,289) | $ (3,092,728) | $ (2,618,792) |
PEO [Member] | Equity Awards Granted in Current Year, Unvested [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | 1,695,607 | 1,322,617 | 2,576,882 |
PEO [Member] | Equity Awards Granted in Prior Years, Unvested [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | (961,109) | (1,452,692) | 526,740 |
PEO [Member] | Equity Awards Granted in Prior Years, Vested [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | 10,543 | 10,543 | 2,750 |
PEO [Member] | Equity Awards Granted in Current Year, Vested [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | 74,167 | 62,953 | 65,323 |
PEO [Member] | Equity Awards That Failed to Meet Vesting Conditions [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | 0 | 0 | 0 |
PEO [Member] | Equity Awards, Value of Dividends and Other Earnings Paid Adjustment [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | 162,999 | 168,068 | 173,737 |
Non-PEO NEO [Member] | Stock Award Adjustments [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | (421,208) | (404,679) | (427,318) |
Non-PEO NEO [Member] | Equity Awards Granted in Current Year, Unvested [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | 242,410 | 187,532 | 534,983 |
Non-PEO NEO [Member] | Equity Awards Granted in Prior Years, Unvested [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | (127,340) | (218,593) | 110,687 |
Non-PEO NEO [Member] | Equity Awards Granted in Prior Years, Vested [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | 1,272 | 1,429 | 790 |
Non-PEO NEO [Member] | Equity Awards Granted in Current Year, Vested [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | 20,827 | 18,401 | 28,039 |
Non-PEO NEO [Member] | Equity Awards That Failed to Meet Vesting Conditions [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | 0 | 0 | 0 |
Non-PEO NEO [Member] | Equity Awards, Value of Dividends and Other Earnings Paid Adjustment [Member] | | | |
Pay vs Performance Disclosure [Table] | | | |
Adjustment to Compensation Amount | $ 21,835 | $ 23,195 | $ 34,027 |