| Market Cap | $439.5M | |
| Enterprise Value | $495.2M | |
| Revenue | $563.4M | +1.7% |
| Gross Profit | $119.3M | −3.7% |
| EBITDA | $37.8M | −0.7% |
| Net Income | $11.2M | −82.4% |
| Diluted EPS | $0.69 | −82.3% |
| Free Cash Flow | $40.5M | +96.2% |
| Ratio | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | Trend · 6y | vs own | vs sector |
|---|---|---|---|---|---|---|---|---|---|
| ▾Margins | |||||||||
| Gross Margin | 19.10% | 16.80% | 18.01% | 20.61% | 22.24% | 21.06% | 75% | 28% | |
| Operating Margin | 3.14% | 0.87% | −1.45% | 1.67% | 3.86% | 4.05% | 92% | 48% | |
| EBITDA Margin | 5.87% | 3.57% | 1.52% | 4.48% | 6.52% | 6.36% | 75% | 43% | |
| NOPAT Margin | 3.14% | 0.66% | −1.14% | 1.67% | 3.86% | 1.73% | 58% | 37% | |
| Net Margin | 1.52% | 0.71% | −9.16% | 0.27% | 8.09% | 1.40% | 58% | 42% | |
| FCF Margin | — | — | −3.66% | 5.97% | 2.42% | 4.67% | 63% | 55% | |
| FCFF Margin | — | — | — | 6.98% | — | — | — | — | — |
| OCF Margin | — | — | −2.13% | 6.80% | 4.26% | 6.60% | 63% | 48% | |
| Gross Profitability | 25.65% | 25.19% | 24.53% | 35.87% | 35.29% | 34.43% | 58% | 46% | |
| Capex Intensity | 1.85% | 0.90% | 1.53% | 0.83% | 1.84% | 1.93% | 92% | 42% | |
| ▸Returns on Capital · 6 ratios | |||||||||
| ▸DuPont factors (ROE drivers) · 4 ratios | |||||||||
| ▸Earnings quality · 7 ratios | |||||||||
| ▸Liquidity & coverage · 9 ratios | |||||||||
| ▸Leverage · 7 ratios | |||||||||
| ▸Working capital · 8 ratios | |||||||||
| ▸Capital allocation · 2 ratios | |||||||||
| ▸Per share · 6 ratios | |||||||||
| ▸Other · 1 ratios | |||||||||
The five drivers multiply to 4.3% vs reported ROE 4.3%. High ROE from margin and turnover is earned; from the equity multiplier it is borrowed.
| Line | 2020↗ | 2021↗ | 2022↗ | 2023↗ | 2024↗ | 2025↗ |
|---|---|---|---|---|---|---|
| Revenue | $497.4M | $513.6M | $497.5M | $543.7M | $530.8M | $540.0M |
| YoY % | +3.3% | -3.1% | +9.3% | -2.4% | +1.7% | |
| Cost of Revenue | $402.4M | $427.3M | $407.9M | $431.7M | $412.7M | $426.3M |
| YoY % | +6.2% | -4.5% | +5.8% | -4.4% | +3.3% | |
| Gross Profit | $95.0M | $86.3M | $89.6M | $112.0M | $118.1M | $113.8M |
| YoY % | -9.2% | +3.8% | +25.0% | +5.4% | -3.7% | |
| R&D Expense | $2.6M | $2.2M | $2.2M | $2.6M | $2.8M | $3.6M |
| YoY % | -15.5% | -0.6% | +15.1% | +10.8% | +28.7% | |
| SG&A Expense | $73.6M | $76.0M | $82.7M | $97.6M | $96.4M | $88.6M |
| YoY % | +3.2% | +8.8% | +18.1% | -1.3% | -8.1% | |
| Operating Income | $15.6M | $4.5M | -$7.2M | $9.1M | $20.5M | $21.9M |
| YoY % | -71.4% | +125.2% | +6.7% | |||
| Interest Expense | $3.8M | $3.0M | $3.3M | $5.5M | — | — |
| YoY % | -21.4% | +13.0% | +65.5% | |||
| Other Non-Operating Income | $2.1M | $3.1M | $1.6M | -$2.6M | -$1.1M | $420,000 |
| YoY % | +45.7% | -49.6% | ||||
| Gains on Sale of Real Estate | — | — | — | $459,000 | $4.4M | $0 |
| YoY % | +865.4% | -100.0% | ||||
| Impairment of Real Estate | — | $0 | $8.0M | $0 | $0 | $1.4M |
| YoY % | -100.0% | |||||
| Pretax Income | $14.0M | $4.6M | -$9.0M | $944,000 | $14.4M | $17.4M |
| YoY % | -67.2% | +1430.2% | +20.6% | |||
| Income Tax | -$11.8M | $1.1M | $36.7M | -$355,000 | -$28.4M | $10.0M |
| YoY % | +3178.0% | |||||
| Income from Continuing Operations | $25.8M | $3.6M | -$45.6M | — | — | — |
| YoY % | -86.2% | |||||
| Net Income (incl. NCI) | $7.6M | $3.5M | -$45.7M | $1.3M | $42.8M | $7.4M |
| YoY % | -53.3% | +3198.2% | -82.7% | |||
| Minority Interest (P&L) | $0 | -$83,000 | -$113,000 | -$165,000 | -$103,000 | -$126,000 |
| Net Income | $7.6M | $3.6M | -$45.6M | $1.5M | $42.9M | $7.5M |
| YoY % | -52.2% | +2833.5% | -82.4% | |||
| EPS (Basic) | $0.72 | $0.34 | -$4.25 | $0.14 | $4.01 | $0.73 |
| YoY % | -52.8% | +2764.3% | -81.8% | |||
| EPS (Diluted) | $0.71 | $0.34 | -$4.25 | $0.13 | $3.89 | $0.69 |
| YoY % | -52.1% | +2892.3% | -82.3% | |||
| Weighted Avg Shares (Basic) | 10.5M | 10.6M | 10.7M | 10.8M | 10.7M | 10.4M |
| YoY % | +0.8% | +0.9% | +0.7% | -0.7% | -3.2% | |
| Weighted Avg Shares (Diluted) | 10.7M | 10.8M | 10.7M | 11.0M | 11.0M | 10.9M |
| YoY % | +0.8% | -0.3% | +2.6% | +0.5% | -1.5% |
The sector classification is SIC-derived, not official GICS. Statement lines are XBRL facts as filed with the company's home regulator (SEC EDGAR for US filers; ESEF/EDINET and other national regulators for foreign filers); ratios and other derived figures are computed from them. A blank cell means the tag was absent — never imputed.