In millions, except per share items | Dec-31-22 | Dec-31-21 | Dec-31-20 | Dec-31-19 | Dec-31-18 | Dec-31-17 | Dec-31-16 | Dec-31-15 |
| 10-K | 10-K | 10-K | 10-K | 10-K | 10-K | 10-K | 10-K |
Revenue: | | | | | | | | |
Total revenue | 280.3 | 250.0 | 225.5 | 212.6 | 232.2 | 235.4 | 227.3 | 196.3 |
Total revenue growth | 12.1% | 10.9% | 6.1% | -8.4% | -1.4% | 3.6% | 15.8% | 9.3% |
Cost of revenue: | | | | | | | | |
Total cost of revenue | 56.8 | 53.5 | 50.1 | 48.9 | 51.9 | 53.3 | 54.4 | 48.4 |
Gross profit | 223.5 | 196.5 | 175.4 | 163.7 | 180.3 | 182.1 | 172.9 | 147.9 |
Gross margin | 79.7% | 78.6% | 77.8% | 77.0% | 77.7% | 77.4% | 76.1% | 75.3% |
|
Operating expenses: | | | | | | | | |
Sales and marketing | 88.5 | 85.7 | 77.7 | 92.8 | 103.2 | 101.4 | 104.4 | 104.5 |
Research and development | 58.4 | 54.1 | 58.1 | 61.8 | 65.2 | 63.0 | 60.7 | 54.8 |
General and administrative | 23.5 | 23.4 | 21.9 | 23.7 | 39.6 | 28.1 | 26.3 | 26.6 |
Restructuring expense | | | | 2.5 | | | | |
Total operating expenses | 170.4 | 163.1 | 157.6 | 180.8 | 208.0 | 192.5 | 193.5 | 188.2 |
Income from operations | 53.1 | 33.4 | 17.7 | -17.1 | -27.7 | -10.4 | -20.6 | -40.3 |
Operating margin | 18.9% | 13.4% | 7.9% | -8.0% | -11.9% | -4.4% | -9.0% | -20.5% |
|
Non-operating income (expense): | | | | | | | | |
Interest income | 1.3 | 0.4 | 1.5 | | | | | |
Interest and other income (expense), net | 1.7 | 2.2 | 3.0 | 0.7 | 1.1 | 0.8 | -0.6 | 0.5 |
Total non-operating income (expense), net | -0.4 | -1.7 | 1.4 | 0.7 | 1.1 | 0.8 | -1.1 | -0.8 |
Income before income taxes | 52.7 | 31.6 | 19.1 | -16.4 | | | | -41.2 |
Provision for (benefit from) income taxes | 5.8 | -63.2 | 1.3 | 1.4 | 1.1 | 1.2 | 0.8 | 0.7 |
Net income | 46.9 | 94.9 | 17.8 | -17.8 | -27.6 | -10.8 | -22.4 | -41.9 |
|
Net income (loss) per share - basic (in dollars per share) | $0.62 | $1.23 | $0.23 | ($0.23) | ($0.38) | ($0.15) | ($0.34) | ($0.67) |
Net income (loss) per share - diluted (in dollars per share) | $0.60 | $1.19 | $0.22 | ($0.23) | ($0.38) | ($0.15) | ($0.34) | ($0.67) |
|
Net income per share: | | | | | | | | |
Weighted-average shares used in computing net income per share: | | | | | | | | |
Weighted Average Number of Shares Outstanding, Basic | 75.5 | 77.0 | 77.8 | 76.1 | 72.9 | 70.1 | 65.7 | 62.4 |
Weighted Average Number of Shares Outstanding, Diluted | 77.8 | 80.0 | 80.0 | 76.1 | 72.9 | 70.1 | 65.7 | 62.4 |