Revenue
2018
2019
2020
2021
2022
2023
2024
2025
| 2025 | 2024 | 2023 | 2022 | 2021 | 2020 | 2019 | 2018 | 2017 | 2016 | 2015 | 2014 | 2013 | 2012 | 2011 | 2010 | 2009 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue | $97.8M | $94.7M | $89.8M | $68.7M | $73.1M | $65.1M | $84.1M | $122.3M | $133.8M | $123.0M | $130.9M | $113.2M | $91.8M | $77.5M | $68.9M | $55.3M | $42.6M |
| Operating expenses | $92.8M | $93.9M | $83.8M | $73.6M | $67.1M | $68.6M | $79.4M | $86.4M | $99.9M | $89.0M | $88.7M | $71.2M | $63.6M | $57.5M | $45.8M | $37.6M | $30.2M |
| Operating income | $5.0M | $830,000 | $6.0M | −$4.9M | $6.0M | −$3.4M | $4.6M | $35.9M | $33.9M | $34.0M | — | — | — | — | — | — | — |
| EBITDAderived | $9.4M | $5.6M | $10.8M | −$2.3M | $8.4M | −$805,000 | $7.3M | $38.5M | $36.8M | $36.9M | — | — | — | — | — | — | — |
| Net income | $7.1M | $2.2M | $10.6M | −$4.6M | $9.8M | −$8.9M | $5.9M | $26.8M | $20.0M | $22.6M | $27.1M | $27.2M | $17.8M | $12.1M | $14.7M | $11.3M | $7.9M |
| Basic EPSper diluted share | $0.84 | $0.27 | $1.20 | -$0.59 | $1.24 | -$1.12 | $0.70 | $3.20 | $2.45 | $2.84 | $3.49 | $3.63 | $2.43 | $1.69 | $2.11 | $1.62 | $1.10 |
| Diluted EPSper diluted share | $0.79 | $0.26 | $1.17 | -$0.59 | $1.23 | -$1.12 | $0.70 | $3.13 | $2.38 | $2.77 | $3.33 | $3.45 | $2.32 | $1.65 | $2.04 | $1.58 | $1.09 |
| Transaction | Insider | Type | Shares | Price | Value | Owned after |
|---|---|---|---|---|---|---|
| Jun 30, 2026Form 4 · 10b5-1 | BYRNE SUSAN MOther | Sellcommon stock | 1.1K | $19.17 | $20.9K | 239.0K |
| Jun 29, 2026Form 4 · 10b5-1 | BYRNE SUSAN MOther | Sellcommon stock | 7.1K | $20.03 | $142.8K | 240.1K |
| Jun 26, 2026Form 4 · 10b5-1 | BYRNE SUSAN MOther | Sellcommon stock | 4.3K | $19.39 | $82.9K | 247.2K |
| Jun 25, 2026Form 4 · 10b5-1 | BYRNE SUSAN MOther | Sellcommon stock | 500 | $18.21 | $9.1K | 251.5K |
| Jun 24, 2026Form 4 · 10b5-1 | BYRNE SUSAN MOther | Sellcommon stock | 1.3K | $18.32 | $23.8K | 252.0K |