Revenue
2009
2010
2011
2012
2013
2014
2015
2016
2017
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 | $158.3M | $145.9M | $161.3M | $166.6M | $140.8M | $114.5M | $124.2M | $118.2M | $112.0M | $108.9M | $109.0M | $103.8M | $92.0M | $83.2M | $79.8M | $76.1M | $116.1M |
| Gross profit | $48.2M | $41.4M | $49.2M | $48.8M | $42.7M | $32.8M | $39.0M | $38.3M | $34.8M | $35.2M | $33.4M | $32.2M | $27.6M | $24.3M | $24.1M | $22.5M | $23.8M |
| Gross margin | 30.44% | 28.34% | 30.52% | 29.30% | 30.36% | 28.68% | 31.36% | 32.37% | 31.08% | 32.29% | 30.64% | 31.05% | 29.96% | 29.24% | 30.20% | 29.50% | 20.48% |
| Operating expenses | $25.6M | $24.3M | $23.8M | $23.4M | $22.2M | $21.0M | $21.3M | $20.5M | $19.6M | $19.6M | $19.4M | $18.6M | $18.2M | $18.9M | $17.7M | $16.6M | $27.8M |
| Operating income | $22.6M | $17.0M | $25.4M | $25.4M | $20.5M | $11.8M | $17.7M | $17.8M | $15.2M | $15.6M | $14.0M | $13.6M | $9.3M | $5.4M | $6.4M | $5.9M | −$4.0M |
| Operating margin | 14.28% | 11.66% | 15.77% | 15.27% | 14.58% | 10.32% | 14.22% | 15.07% | 13.60% | 14.30% | 12.82% | 13.10% | 10.13% | 6.51% | 8.03% | 7.73% | −3.48% |
| EBITDA | $26.3M | $20.7M | $29.4M | $29.4M | $24.4M | $15.6M | $21.4M | $21.3M | $18.9M | $19.3M | $17.5M | $17.1M | $12.6M | $11.2M | $13.2M | $13.6M | $4.2M |
| EBITDA margin | 16.59% | 14.19% | 18.23% | 17.66% | 17.30% | 13.66% | 17.18% | 17.99% | 16.88% | 17.69% | 16.06% | 16.51% | 13.69% | 13.45% | 16.53% | 17.81% | 3.59% |
| Net income | $19.5M | $16.6M | $22.6M | $20.9M | $16.6M | $10.3M | $16.0M | $15.3M | $13.2M | $10.5M | $9.1M | $8.7M | $6.0M | $35.0M | $7.7M | $3.1M | −$2.0M |
| Net profit margin | 12.31% | 11.37% | 14.01% | 12.53% | 11.77% | 9.01% | 12.88% | 12.96% | 11.78% | 9.60% | 8.37% | 8.34% | 6.53% | 42.02% | 9.61% | 4.01% | −1.72% |
| Basic EPSper basic share | $1.58 | $1.35 | $1.84 | $1.69 | $1.34 | $0.83 | $1.29 | $1.23 | $1.06 | $0.84 | $0.73 | $0.70 | $0.49 | $2.82 | $0.62 | $0.25 | -$0.16 |
| Diluted EPSper diluted share | $1.58 | $1.35 | $1.84 | $1.69 | $1.34 | $0.83 | $1.29 | $1.23 | $1.06 | $0.84 | $0.73 | $0.70 | $0.49 | $2.82 | $0.62 | $0.25 | -$0.16 |
Reported shareholders
Reported holdings Number of shares
| Holder | Shares held |
|---|---|
DIMENSIONAL FUND ADVISORS LP | 179.83K |
ROYCE & ASSOCIATES LP | 166.07K |
BlackRock, Inc. | 123.02K |
RENAISSANCE TECHNOLOGIES LLC | 100.75K |
VANGUARD CAPITAL MANAGEMENT LLC | 71.53K |
GEODE CAPITAL MANAGEMENT, LLC | 40.84K |
STATE STREET CORP | 30.57K |
BRIDGEWAY CAPITAL MANAGEMENT, LLC | 22.67K |
NORTHERN TRUST CORP | 17.98K |
VANGUARD PORTFOLIO MANAGEMENT LLC | 10.35K |
VANGUARD FIDUCIARY TRUST CO | 10.27K |
BARCLAYS PLC | 5.82K |
JPMORGAN CHASE & CO | 4.82K |
MORGAN STANLEY | 3.59K |
IFG Advisory, LLC | 3.15K |
RHUMBLINE ADVISERS | 2.74K |
DEUTSCHE BANK AG\ | 1.43K |
ROYAL BANK OF CANADA | 1.38K |
WELLS FARGO & COMPANY/MN | 1.31K |
LOS ANGELES CAPITAL MANAGEMENT LLC | 1.23K |
Bars compare reported share counts. A matching total for this share class and reporting period is unavailable, so percentages are not shown.
| Transaction | Insider | Type | Shares | Price | Value | Owned after |
|---|---|---|---|---|---|---|
| Mar 11, 2025Form 4 | Hanley Bryan A.Senior VP and Treasurer | BuyCommon Stock, par value $0.01 | 200 | $22.50 | $4.5K | 2.3K |
| Mar 11, 2025Form 4 | Hanley Bryan A.Senior VP and Treasurer | BuyCommon Stock, par value $0.01 | 500 | $22.15 | $11.1K | 2.0K |
| Mar 11, 2025Form 4 | Hanley Bryan A.Senior VP and Treasurer | BuyCommon Stock, par value $0.01 | 50 | $21.50 | $1.1K | 1.6K |
| Nov 14, 2024Form 4 | Tidlund Mary A.Director | SellClass A Common Stock $0.01 par value per share | 1.0K | $29.02 | $29.0K | 5.7K |
| Nov 12, 2024Form 4 | Tidlund Mary A.Director | SellClass A Common Stock $0.01 par value per share | 2.0K | $28.58 | $57.2K | 6.7K |