Document And Entity Information
Document And Entity Information - shares | 9 Months Ended | |
Sep. 30, 2019 | Oct. 24, 2019 | |
Document Information [Line Items] | ||
Entity Central Index Key | 0001443669 | |
Entity Registrant Name | Proto Labs Inc | |
Amendment Flag | false | |
Current Fiscal Year End Date | --12-31 | |
Document Fiscal Period Focus | Q3 | |
Document Fiscal Year Focus | 2019 | |
Document Type | 10-Q | |
Document Quarterly Report | true | |
Document Period End Date | Sep. 30, 2019 | |
Document Transition Report | false | |
Entity File Number | 001-35435 | |
Entity Incorporation, State or Country Code | MN | |
Entity Tax Identification Number | 41-1939628 | |
Entity Address, Address Line One | 5540 Pioneer Creek Drive | |
Entity Address, City or Town | Maple Plain | |
Entity Address, State or Province | MN | |
Entity Address, Postal Zip Code | 55359 | |
City Area Code | 763 | |
Local Phone Number | 479-3680 | |
Title of 12(b) Security | Common Stock, Par Value $0.001 Per Share | |
Trading Symbol | PRLB | |
Security Exchange Name | NYSE | |
Entity Interactive Data Current | Yes | |
Entity Current Reporting Status | Yes | |
Entity Filer Category | Large Accelerated Filer | |
Entity Small Business | false | |
Entity Emerging Growth Company | false | |
Entity Shell Company | false | |
Entity Common Stock, Shares Outstanding | 26,759,436 |
Consolidated Balance Sheets (Cu
Consolidated Balance Sheets (Current Period Unaudited) - USD ($) $ in Thousands | Sep. 30, 2019 | Dec. 31, 2018 |
Current assets | ||
Cash and cash equivalents | $ 121,568 | $ 85,046 |
Short-term marketable securities | 23,642 | 46,750 |
Accounts receivable, net of allowance for doubtful accounts of $1,001 and $919 as of September 30, 2019 and December 31, 2018, respectively | 64,069 | 59,155 |
Inventory | 9,448 | 10,087 |
Prepaid expenses and other current assets | 8,038 | 8,567 |
Income taxes receivable | 2,852 | 5,757 |
Total current assets | 229,617 | 215,362 |
Property and equipment, net | 252,579 | 228,001 |
Goodwill | 128,752 | 128,752 |
Other intangible assets, net | 18,258 | 19,850 |
Long-term marketable securities | 9,783 | 23,579 |
Operating lease assets | 12,008 | 0 |
Other long-term assets | 3,902 | 3,441 |
Total assets | 654,899 | 618,985 |
Current liabilities | ||
Accounts payable | 18,668 | 17,411 |
Accrued compensation | 12,926 | 18,130 |
Accrued liabilities and other | 13,133 | 16,702 |
Current operating lease liabilities | 3,364 | 0 |
Income taxes payable | 6,717 | 491 |
Total current liabilities | 54,808 | 52,734 |
Long-term operating lease liabilities | 9,006 | 0 |
Long-term deferred tax liabilities | 21,750 | 20,162 |
Other long-term liabilities | 5,238 | 4,592 |
Total liabilities | 90,802 | 77,488 |
Shareholders' equity | ||
Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of September 30, 2019 and December 31, 2018 | 0 | 0 |
Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 26,759,109 and 26,984,747 shares as of September 30, 2019 and December 31, 2018, respectively | 27 | 27 |
Additional paid-in capital | 265,178 | 258,502 |
Retained earnings | 309,536 | 291,460 |
Accumulated other comprehensive loss | (10,644) | (8,492) |
Total shareholders' equity | 564,097 | 541,497 |
Total liabilities and shareholders' equity | $ 654,899 | $ 618,985 |
Consolidated Balance Sheets (_2
Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals) - USD ($) $ in Thousands | Sep. 30, 2019 | Dec. 31, 2018 |
Allowance for doubtful accounts | $ 1,001 | $ 919 |
Preferred stock, par value (in dollars per share) | $ 0.001 | $ 0.001 |
Preferred stock, shares authorized (in shares) | 10,000,000 | 10,000,000 |
Preferred stock, shares issued (in shares) | 0 | 0 |
Preferred stock, shares outstanding (in shares) | 0 | 0 |
Common stock, par value (in dollars per share) | $ 0.001 | $ 0.001 |
Common stock, shares authorized (in shares) | 150,000,000 | 150,000,000 |
Common stock, shares issued (in shares) | 26,759,109 | 26,984,747 |
Common stock, shares outstanding (in shares) | 26,759,109 | 26,984,747 |
Consolidated Statements of Comp
Consolidated Statements of Comprehensive Income (Unaudited) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2019 | Sep. 30, 2018 | Sep. 30, 2019 | Sep. 30, 2018 | |
Statements of Operations: | ||||
Revenue | $ 117,455 | $ 115,430 | $ 346,839 | $ 332,827 |
Cost of revenue | 57,839 | 53,027 | 168,127 | 153,303 |
Gross profit | 59,616 | 62,403 | 178,712 | 179,524 |
Operating expenses | ||||
Marketing and sales | 17,604 | 16,818 | 55,466 | 50,947 |
Research and development | 8,359 | 7,458 | 24,541 | 21,155 |
General and administrative | 12,380 | 13,096 | 38,411 | 38,679 |
Total operating expenses | 38,343 | 37,372 | 118,418 | 110,781 |
Income from operations | 21,273 | 25,031 | 60,294 | 68,743 |
Other income, net | 228 | 390 | 1,566 | 1,376 |
Income before income taxes | 21,501 | 25,421 | 61,860 | 70,119 |
Provision for income taxes | 4,709 | 4,484 | 13,391 | 12,817 |
Net income | $ 16,792 | $ 20,937 | $ 48,469 | $ 57,302 |
Net income per share: | ||||
Basic (in dollars per share) | $ 0.63 | $ 0.77 | $ 1.80 | $ 2.13 |
Diluted (in dollars per share) | $ 0.62 | $ 0.77 | $ 1.79 | $ 2.10 |
Shares used to compute net income per share: | ||||
Basic (in shares) | 26,846,030 | 27,038,585 | 26,894,420 | 26,963,205 |
Diluted (in shares) | 27,005,341 | 27,337,886 | 27,072,873 | 27,268,311 |
Comprehensive Income (net of tax) | ||||
Comprehensive income | $ 14,642 | $ 20,058 | $ 46,317 | $ 55,298 |
Consolidated Statements of Shar
Consolidated Statements of Shareholders' Equity - USD ($) $ in Thousands | Common Stock [Member] | Additional Paid-in Capital [Member] | Retained Earnings [Member] | AOCI Attributable to Parent [Member] | Total |
Balance (in shares) at Dec. 31, 2017 | 26,828,651 | ||||
Balance at Dec. 31, 2017 | $ 27 | $ 241,725 | $ 224,697 | $ (5,234) | $ 461,215 |
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 102,895 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | 2,250 | 2,250 | |||
Stock-based compensation expense | 2,307 | 2,307 | |||
Repurchases of common stock (in shares) | 0 | ||||
Net income | 18,051 | 18,051 | |||
Other comprehensive income | |||||
Foreign currency translation adjustment | 2,393 | 2,393 | |||
Comprehensive income | 20,444 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 102,895 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | 2,250 | 2,250 | |||
Stock-based compensation expense | 2,307 | 2,307 | |||
Repurchases of common stock (in shares) | 0 | ||||
Net income | 18,051 | 18,051 | |||
Balance (in shares) at Dec. 31, 2017 | 26,828,651 | ||||
Balance at Dec. 31, 2017 | $ 27 | 241,725 | 224,697 | (5,234) | 461,215 |
Balance (in shares) at Mar. 31, 2018 | 26,931,546 | ||||
Balance at Mar. 31, 2018 | $ 27 | 246,282 | 244,208 | (2,841) | 487,676 |
Balance (in shares) at Dec. 31, 2017 | 26,828,651 | ||||
Balance at Dec. 31, 2017 | $ 27 | 241,725 | 224,697 | (5,234) | 461,215 |
Net income | 57,302 | ||||
Other comprehensive income | |||||
Comprehensive income | 55,298 | ||||
Net income | 57,302 | ||||
Balance (in shares) at Dec. 31, 2017 | 26,828,651 | ||||
Balance at Dec. 31, 2017 | $ 27 | 241,725 | 224,697 | (5,234) | 461,215 |
Balance (in shares) at Sep. 30, 2018 | 27,068,068 | ||||
Balance at Sep. 30, 2018 | $ 27 | 254,958 | 283,459 | (7,238) | 531,206 |
Other comprehensive income | |||||
Revenue recognition transition adjustment | 1,460 | 1,460 | |||
Balance (in shares) at Mar. 31, 2018 | 26,931,546 | ||||
Balance at Mar. 31, 2018 | $ 27 | 246,282 | 244,208 | (2,841) | 487,676 |
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 94,848 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | 1,054 | 1,054 | |||
Stock-based compensation expense | 2,727 | 2,727 | |||
Repurchases of common stock (in shares) | 0 | ||||
Net income | 18,314 | 18,314 | |||
Other comprehensive income | |||||
Foreign currency translation adjustment | (3,518) | (3,518) | |||
Comprehensive income | 14,796 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 94,848 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | 1,054 | 1,054 | |||
Stock-based compensation expense | 2,727 | 2,727 | |||
Repurchases of common stock (in shares) | 0 | ||||
Net income | 18,314 | 18,314 | |||
Balance (in shares) at Mar. 31, 2018 | 26,931,546 | ||||
Balance at Mar. 31, 2018 | $ 27 | 246,282 | 244,208 | (2,841) | 487,676 |
Balance (in shares) at Jun. 30, 2018 | 27,026,394 | ||||
Balance at Jun. 30, 2018 | $ 27 | 250,063 | 262,522 | (6,359) | 506,253 |
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 41,674 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | 1,942 | 1,942 | |||
Stock-based compensation expense | 2,953 | 2,953 | |||
Repurchases of common stock (in shares) | 0 | ||||
Net income | 20,937 | 20,937 | |||
Other comprehensive income | |||||
Foreign currency translation adjustment | (879) | (879) | |||
Comprehensive income | 20,058 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 41,674 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | 1,942 | 1,942 | |||
Stock-based compensation expense | 2,953 | 2,953 | |||
Repurchases of common stock (in shares) | 0 | ||||
Net income | 20,937 | 20,937 | |||
Balance (in shares) at Jun. 30, 2018 | 27,026,394 | ||||
Balance at Jun. 30, 2018 | $ 27 | 250,063 | 262,522 | (6,359) | 506,253 |
Balance (in shares) at Sep. 30, 2018 | 27,068,068 | ||||
Balance at Sep. 30, 2018 | $ 27 | 254,958 | 283,459 | (7,238) | $ 531,206 |
Balance (in shares) at Dec. 31, 2018 | 26,984,747 | 26,984,747 | |||
Balance at Dec. 31, 2018 | $ 27 | 258,502 | 291,460 | (8,492) | $ 541,497 |
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 19,950 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | (420) | (420) | |||
Stock-based compensation expense | 3,040 | 3,040 | |||
Repurchases of common stock (in shares) | (157,716) | ||||
Repurchases of common stock | (1,511) | (15,798) | (17,309) | ||
Net income | 15,511 | 15,511 | |||
Other comprehensive income | |||||
Foreign currency translation adjustment | 476 | 476 | |||
Comprehensive income | 15,987 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 19,950 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | (420) | (420) | |||
Stock-based compensation expense | 3,040 | 3,040 | |||
Repurchases of common stock (in shares) | (157,716) | ||||
Repurchases of common stock | (1,511) | (15,798) | (17,309) | ||
Net income | 15,511 | $ 15,511 | |||
Balance (in shares) at Dec. 31, 2018 | 26,984,747 | 26,984,747 | |||
Balance at Dec. 31, 2018 | $ 27 | 258,502 | 291,460 | (8,492) | $ 541,497 |
Balance (in shares) at Mar. 31, 2019 | 26,846,981 | ||||
Balance at Mar. 31, 2019 | $ 27 | 259,611 | 291,173 | (8,016) | $ 542,795 |
Balance (in shares) at Dec. 31, 2018 | 26,984,747 | 26,984,747 | |||
Balance at Dec. 31, 2018 | $ 27 | 258,502 | 291,460 | (8,492) | $ 541,497 |
Net income | 48,469 | ||||
Other comprehensive income | |||||
Comprehensive income | 46,317 | ||||
Net income | $ 48,469 | ||||
Balance (in shares) at Dec. 31, 2018 | 26,984,747 | 26,984,747 | |||
Balance at Dec. 31, 2018 | $ 27 | 258,502 | 291,460 | (8,492) | $ 541,497 |
Balance (in shares) at Sep. 30, 2019 | 26,759,109 | 26,759,109 | |||
Balance at Sep. 30, 2019 | $ 27 | 265,178 | 309,536 | (10,644) | $ 564,097 |
Balance (in shares) at Mar. 31, 2019 | 26,846,981 | ||||
Balance at Mar. 31, 2019 | $ 27 | 259,611 | 291,173 | (8,016) | 542,795 |
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 75,785 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | 245 | 245 | |||
Stock-based compensation expense | 3,486 | 3,486 | |||
Repurchases of common stock (in shares) | (40,669) | ||||
Repurchases of common stock | (390) | (3,711) | (4,101) | ||
Net income | 16,166 | 16,166 | |||
Other comprehensive income | |||||
Foreign currency translation adjustment | (478) | (478) | |||
Comprehensive income | 15,688 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 75,785 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | 245 | 245 | |||
Stock-based compensation expense | 3,486 | 3,486 | |||
Repurchases of common stock (in shares) | (40,669) | ||||
Repurchases of common stock | (390) | (3,711) | (4,101) | ||
Net income | 16,166 | 16,166 | |||
Balance (in shares) at Mar. 31, 2019 | 26,846,981 | ||||
Balance at Mar. 31, 2019 | $ 27 | 259,611 | 291,173 | (8,016) | 542,795 |
Balance (in shares) at Jun. 30, 2019 | 26,882,097 | ||||
Balance at Jun. 30, 2019 | $ 27 | 262,952 | 303,628 | (8,494) | 558,113 |
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 5,089 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | 241 | 241 | |||
Stock-based compensation expense | 3,212 | 3,212 | |||
Repurchases of common stock (in shares) | (128,077) | ||||
Repurchases of common stock | (1,227) | (10,884) | (12,111) | ||
Net income | 16,792 | 16,792 | |||
Other comprehensive income | |||||
Foreign currency translation adjustment | (2,150) | (2,150) | |||
Comprehensive income | 14,642 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) | 5,089 | ||||
Common shares issued on exercise of options and other, net of shares withheld for tax obligations | 241 | 241 | |||
Stock-based compensation expense | 3,212 | 3,212 | |||
Repurchases of common stock (in shares) | (128,077) | ||||
Repurchases of common stock | (1,227) | (10,884) | (12,111) | ||
Net income | 16,792 | 16,792 | |||
Balance (in shares) at Jun. 30, 2019 | 26,882,097 | ||||
Balance at Jun. 30, 2019 | $ 27 | 262,952 | 303,628 | (8,494) | $ 558,113 |
Balance (in shares) at Sep. 30, 2019 | 26,759,109 | 26,759,109 | |||
Balance at Sep. 30, 2019 | $ 27 | $ 265,178 | $ 309,536 | $ (10,644) | $ 564,097 |
Consolidated Statements of Cash
Consolidated Statements of Cash Flows (Unaudited) - USD ($) $ in Thousands | 9 Months Ended | |
Sep. 30, 2019 | Sep. 30, 2018 | |
Operating activities | ||
Net income | $ 48,469 | $ 57,302 |
Adjustments to reconcile net income to net cash provided by operating activities: | ||
Depreciation and amortization | 22,658 | 19,520 |
Stock-based compensation expense | 9,738 | 7,986 |
Deferred taxes | 1,599 | 1,770 |
Gain on sale of businesses | 0 | (671) |
Amortization of held-to-maturity securities | (5) | 336 |
Other | (133) | 160 |
Changes in operating assets and liabilities: | ||
Accounts receivable | (5,387) | (8,993) |
Inventories | 551 | 324 |
Prepaid expenses and other | (162) | (2,058) |
Income taxes | 9,165 | 2,278 |
Accounts payable | 1,479 | 980 |
Accrued liabilities and other | (4,193) | 6,028 |
Net cash provided by operating activities | 83,779 | 84,962 |
Investing activities | ||
Purchases of property, equipment and other capital assets | (46,151) | (61,898) |
Cash used for acquisitions, net of cash acquired | 0 | (90) |
Proceeds from sale of business | 0 | 284 |
Purchases of other assets and investments | (4,000) | (126) |
Purchases of marketable securities | (17,443) | (41,384) |
Proceeds from maturities of marketable securities | 54,352 | 44,721 |
Net cash used in investing activities | (13,242) | (58,493) |
Financing activities | ||
Payments on debt | 0 | (5,000) |
Proceeds from exercises of stock options | 2,486 | 7,269 |
Purchases of shares withheld for tax obligations | (2,420) | (2,021) |
Repurchases of common stock | (33,521) | 0 |
Net cash (used in) provided by financing activities | (33,455) | 248 |
Effect of exchange rate changes on cash and cash equivalents | (560) | (831) |
Net increase in cash and cash equivalents | 36,522 | 25,886 |
Cash and cash equivalents, beginning of period | 85,046 | 36,707 |
Cash and cash equivalents, end of period | $ 121,568 | $ 62,593 |
Note 1 - Basis of Presentation
Note 1 - Basis of Presentation | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block] | Note 1 The unaudited interim Consolidated Financial Statements of Proto Labs, Inc. (Protolabs, the Company, we, us or our) have been prepared in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP) for interim financial information and with the instructions to Form 10 10 X. not may The preparation of the financial statements in conformity with U.S. GAAP requires management to make estimates and assumptions that affect the reported amounts of assets, liabilities, revenues, expenses, and the related disclosures at the date of the financial statements and during the reporting period. Actual results could materially differ from these estimates. For further information, refer to the audited Consolidated Financial Statements and Notes thereto included in the Company’s Annual Report on Form 10 December 31, 2018 February 22, 2019. The accompanying Consolidated Balance Sheet as of December 31, 2018 not 10 10 February 22, 2019 |
Note 2 - Recent Accounting Pron
Note 2 - Recent Accounting Pronouncements | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Significant Accounting Policies [Text Block] | Note 2 Recently Adopted Accounting Pronouncements During the first 2019, 2016 02, Leases 842 2018 11, Leases 840, Leases 12 January 1, 2019 Recently Issued Accounting Pronouncements In January 2017, 2017 04, Intangibles – Goodwill and Other December 15, 2019 not In June 2016, 2016 13, Financial Instruments – Credit Losses December 15, 2019 not |
Note 3 - Net Income Per Common
Note 3 - Net Income Per Common Share | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Earnings Per Share [Text Block] | Note 3 Basic net income per share is computed based on the weighted-average number of common shares outstanding. Diluted net income per share is computed based on the weighted-average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options, restricted stock units and restricted stock awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan. Performance stock units are excluded from the calculation of dilutive potential common shares until the performance conditions have been satisfied. The table below sets forth the computation of basic and diluted net income per share: Three Months Ended Nine Months Ended September 30, September 30, (in thousands, except share and per share amounts) 2019 2018 2019 2018 Net income $ 16,792 $ 20,937 $ 48,469 $ 57,302 Basic - weighted-average shares outstanding: 26,846,030 27,038,585 26,894,420 26,963,205 Effect of dilutive securities: Employee stock options and other 159,311 299,301 178,453 305,106 Diluted - weighted-average shares outstanding: 27,005,341 27,337,886 27,072,873 27,268,311 Net income per share: Basic $ 0.63 $ 0.77 $ 1.80 $ 2.13 Diluted $ 0.62 $ 0.77 $ 1.79 $ 2.10 |
Note 4 - Goodwill and Other Int
Note 4 - Goodwill and Other Intangible Assets | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Goodwill and Intangible Assets Disclosure [Text Block] | Note 4 There were no changes in the carrying amount of Goodwill during the three nine September 30, 2019 Intangible assets other than goodwill at September 30, 2019 December 31, 2018 September 30, 2019 December 31, 2018 Useful Weighted Average (in thousands) Gross Accumulated Amortization Net Gross Accumulated Amortization Net Life Useful Life Intangible assets with finite lives: Marketing assets $ 930 $ (504 ) $ 426 $ 930 $ (434 ) $ 496 10.0 4.6 Non-compete agreement 270 (218 ) 52 270 (206 ) 64 2.0 - 5.0 3.3 Trade secrets 250 (250 ) - 250 (233 ) 17 5.0 0.0 Trade names 1,080 (945 ) 135 1,080 (540 ) 540 2.0 0.3 Software technology 13,229 (1,933 ) 11,296 12,229 (997 ) 11,232 10.0 8.3 Customer relationships 10,070 (3,721 ) 6,349 10,070 (2,569 ) 7,501 6.0 - 9.0 4.1 Total intangible assets $ 25,829 $ (7,571 ) $ 18,258 $ 24,829 $ (4,979 ) $ 19,850 Amortization expense for intangible assets was $0.9 million and $0.8 million for the three September 30, 2019 2018 nine September 30, 2019 2018 Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets is as follows: (in thousands) Estimated Remaining 2019 $ 889 2020 3,016 2021 3,016 2022 3,016 2023 2,813 Thereafter 5,508 Total estimated amortization expense $ 18,258 |
Note 5 - Fair Value Measurement
Note 5 - Fair Value Measurements | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Fair Value Disclosures [Text Block] | Note 5 ASC 820, Fair Value Measuremen 820 820 three may Level 1—Quoted Level 2—Observable 1 not Level 3—Unobservable no The Company’s cash consists of bank deposits. The Company’s cash equivalents measured at fair value consist of money market mutual funds. The Company determines the fair value of these investments using Level 1 The following table summarizes financial assets as of September 30, 2019 December 31, 2018 September 30, 2019 December 31, 2018 (in thousands) Level 1 Level 2 Level 3 Level 1 Level 2 Level 3 Financial Assets: Cash and cash equivalents Money market mutual fund $ 58,563 $ - $ - $ 8,943 $ - $ - Total $ 58,563 $ - $ - $ 8,943 $ - $ - |
Note 6 - Marketable Securities
Note 6 - Marketable Securities | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Investment [Text Block] | Note 6 The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as held-to-maturity and are recorded at amortized cost. Categorization as held-to-maturity is based on the Company’s ability and intent to hold these securities to maturity. The following table summarizes information regarding the Company’s short-term and long-term marketable securities as of September 30, 2019 December 31, 2018 September 30, 2019 (in thousands) Cost Unrealized Gains Unrealized Losses Fair Value U.S. municipal securities $ 5,612 $ 11 $ (3 ) $ 5,620 Corporate debt securities 16,503 100 (1 ) 16,602 U.S. government agency securities 8,340 1 (10 ) 8,331 Certificates of deposit/time deposits 1,479 22 (1 ) 1,500 Commercial paper 1,491 - (1 ) 1,490 Total marketable securities $ 33,425 $ 134 $ (16 ) $ 33,543 December 31, 2018 (in thousands) Cost Unrealized Gains Unrealized Losses Fair Value U.S. municipal securities $ 17,509 $ 1 $ (33 ) $ 17,477 Corporate debt securities 31,769 - (96 ) 31,673 U.S. government agency securities 16,843 - (88 ) 16,755 Certificates of deposit/time deposits 4,208 - (25 ) 4,183 Total marketable securities $ 70,329 $ 1 $ (242 ) $ 70,088 Fair values for the corporate debt securities are primarily determined based on quoted market prices (Level 1 2 The Company tests for other-than-temporary losses on a quarterly basis and has considered the unrealized losses indicated above to be temporary in nature. In reaching this conclusion, the Company considered the credit quality of the issuers of the debt securities as well as the Company’s intent to hold the investments to maturity and recover the full principal. Classification of marketable securities as current or non-current is based upon the security’s maturity date as of the date of these financial statements. The September 30, 2019 may may September 30, (in thousands) 2019 Due in one year or less $ 23,642 Due after one year through five years 9,783 Total marketable securities $ 33,425 |
Note 7 - Inventory
Note 7 - Inventory | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Inventory Disclosure [Text Block] | Note 7 Inventory consists primarily of raw materials, which are recorded at the lower of cost or market using the average-cost method, which approximates first first The Company’s inventory consisted of the following as of the dates indicated: September 30, December 31, (in thousands) 2019 2018 Raw materials $ 9,328 $ 9,560 Work in process 304 792 Total inventory 9,632 10,352 Allowance for obsolescence (184 ) (265 ) Inventory, net of allowance $ 9,448 $ 10,087 |
Note 8 - Leases
Note 8 - Leases | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Lessee, Operating Leases [Text Block] | Note 8 The Company’s significant accounting policies are disclosed in Note 2 10 December 31, 2018 842 The Company accounts for leases in accordance with ASC 842. January 1, 2019, 842, 840 not 842. not January 1, 2019. not 842 not The Company has operating leases for office space, manufacturing facilities and certain company vehicles and equipment. The leases have remaining lease terms of one 12 not may September 30, 2019 not The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date. The majority of the Company’s leases do not Supplemental balance sheet information related to leases was as follows: (in thousands) September 30, 2019 Operating lease assets $ 12,008 Current operating lease liabilities $ 3,364 Long-term operating lease liabilities 9,006 Total operating lease liabilities $ 12,370 Lease expense is recognized on a straight-line basis over the lease term, with variable payments recognized in the period those payments are incurred. The components of lease expense for the periods reported were as follows: (in thousands) Three Months Ended September 30, 2019 Nine Months Ended September 30, 2019 Operating lease cost $ 967 $ 2,984 Variable lease cost 306 811 Total lease cost $ 1,273 $ 3,795 Maturities of operating lease liabilities as of September 30, 2019 842 (in thousands) Operating Leases Year Ending December 31, 2019 (excluding nine months ended September 30, 2019) $ 1,216 2020 3,514 2021 2,770 2022 2,580 2023 1,041 After 2023 2,050 Total future minimum lease payments 13,171 Less interest (801 ) Present value of lease liabilities $ 12,370 As of September 30, 2019 not Weighted average remaining lease term and discount rate was as follows: September 30, 2019 Weighted Average Remaining Lease Term (Years) 4.8 Weighted Average Discount Rate 2.6 % Supplemental cash flow information related to leases was as follows: (in thousands) Nine Months Ended September 30, 2019 Cash paid for amounts included in the measurement of operating lease liabilities: Operating cash flows for operating leases $ 3,878 Lease assets obtained in exchange for new operating lease liabilities 1,837 |
Note 9 - Stock-based Compensati
Note 9 - Stock-based Compensation | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Share-based Payment Arrangement [Text Block] | Note 9 Under the Company’s 2012 2012 2012 ten may 2012 may not Employee Stock Purchase Plan The Company’s 2012 six May 15 November 15, first Stock-Based Compensation Expense Stock-based compensation expense was $3.2 million and $3.0 million for the three September 30, 2019 2018 nine September 30, 2019 2018 Stock Options The following table summarizes stock option activity during the nine September 30, 2019 Weighted- Average Stock Options Exercise Price Options outstanding at December 31, 2018 252,616 $ 64.71 Granted 53,708 105.81 Exercised (11,921 ) 56.25 Forfeited (10,833 ) 83.74 Options outstanding at September 30, 2019 283,570 $ 72.12 Exercisable at September 30, 2019 154,539 $ 58.18 The outstanding options generally have a term of ten four five first first The weighted-average grant date fair value of options that were granted during the nine September 30, 2019 The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the nine September 30, 2019 2018 Nine Months Ended September 30, 2019 2018 Risk-free interest rate 2.35 - 2.58% 2.52 - 3.07% Expected life (years) 6.25 6.25 Expected volatility 42.52 - 42.74% 41.68 - 42.22% Expected dividend yield 0% 0% As of September 30, 2019 Restricted Stock Restricted stock awards are share-settled awards and restrictions lapse ratably over the vesting period, which is generally a period from four five first first The following table summarizes restricted stock activity during the nine September 30, 2019 Weighted- Average Grant Date Restricted Fair Value Stock Per Share Restricted stock at December 31, 2018 323,921 $ 79.85 Granted 114,467 106.41 Restrictions lapsed (95,884 ) 79.32 Forfeited (20,299 ) 86.54 Restricted stock at September 30, 2019 322,205 $ 89.02 As of September 30, 2019 Performance Stock Performance stock units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between 0 percent and 150 percent of that target number capable of being earned and vesting at the end of a three The following table summarizes performance stock activity during the nine September 30, 2019 Weighted- Average Grant Date Performance Fair Value Stock Per Share Performance stock at December 31, 2018 52,140 $ 76.54 Granted 21,434 104.99 Restrictions lapsed - - Performance change (12,854 ) 58.35 Forfeited (2,375 ) 105.37 Performance stock at September 30, 2019 58,345 $ 89.82 As of September 30, 2019 Employee Stock Purchase Plan The following table presents the assumptions used to estimate the fair value of the ESPP during the nine September 30, 2019 2018 Nine Months Ended September 30, 2019 2018 Risk-free interest rate 2.33 - 2.35% 1.48 - 2.06% Expected life (months) 6.00 6.00 Expected volatility 37.36 - 53.57% 24.49 - 31.50% Expected dividend yield 0% 0% |
Note 10 - Accumulated Other Com
Note 10 - Accumulated Other Comprehensive Loss | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Disclosure of Reclassification Amount [Text Block] | Note 10 Other comprehensive income (loss) is comprised entirely of foreign currency translation adjustments. The following table presents the changes in accumulated other comprehensive income (loss) balances during the three nine September 30, 2019 2018 Three Months Ended Nine Months Ended September 30, September 30, (in thousands) 2019 2018 2019 2018 Foreign currency translation adjustments Balance at beginning of period $ (8,494 ) $ (6,359 ) $ (8,492 ) $ (5,234 ) Other comprehensive income (loss) before reclassifications (2,150 ) (879 ) (2,152 ) (2,004 ) Amounts reclassified from accumulated other comprehensive loss - - - - Net current-period other comprehensive income (loss) (2,150 ) (879 ) (2,152 ) (2,004 ) Balance at end of period $ (10,644 ) $ (7,238 ) $ (10,644 ) $ (7,238 ) |
Note 11 - Income Taxes
Note 11 - Income Taxes | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Income Tax Disclosure [Text Block] | Note 11 The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the three September 30, 2019 2018 nine September 30, 2019 2018 three September 30, 2019 three September 30, 2019 2018 2018. nine September 30, 2019 nine September 30, 2019 2018 2018. The effective income tax rate for the nine September 30, 2019 The Company had unrecognized tax benefits totaling $4.4 million and $4.1 million as of September 30, 2019 December 31, 2018 |
Note 12 - Segment Reporting
Note 12 - Segment Reporting | 9 Months Ended |
Sep. 30, 2019 | |
Notes to Financial Statements | |
Segment Reporting Disclosure [Text Block] | Note 12 The Company’s reportable segments are based on the internal reporting used by the Company’s Chief Executive Officer, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Corporate Unallocated and Japan category includes non-reportable segments, as well as research and development and general and administrative costs that the Company does not Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are not Beginning in 2019, Revenue and income from operations by reportable segment for the three nine September 30, 2019 2018 Three Months Ended September 30, Nine Months Ended September 30, (in thousands) 2019 2018 2019 2018 Revenue: United States $ 92,916 $ 90,732 $ 271,877 $ 261,253 Europe 20,721 21,273 62,915 61,431 Japan 3,818 3,425 12,047 10,143 Total revenue $ 117,455 $ 115,430 $ 346,839 $ 332,827 Three Months Ended September 30, Nine Months Ended September 30, (in thousands) 2019 2018 2019 2018 Income from Operations: United States $ 28,109 $ 30,479 $ 82,367 $ 88,579 Europe 4,045 5,465 12,022 12,835 Corporate Unallocated and Japan (10,881 ) (10,913 ) (34,095 ) (32,671 ) Total Income from Operations $ 21,273 $ 25,031 $ 60,294 $ 68,743 Total long-lived assets at September 30, 2019 December 31, 2018 September 30, December 31, (in thousands) 2019 2018 Total long-lived assets: United States $ 203,771 $ 185,979 Europe 40,353 34,577 Japan 8,455 7,445 Total Assets $ 252,579 $ 228,001 |
Significant Accounting Policies
Significant Accounting Policies (Policies) | 9 Months Ended |
Sep. 30, 2019 | |
Accounting Policies [Abstract] | |
New Accounting Pronouncements, Policy [Policy Text Block] | Recently Adopted Accounting Pronouncements During the first 2019, 2016 02, Leases 842 2018 11, Leases 840, Leases 12 January 1, 2019 Recently Issued Accounting Pronouncements In January 2017, 2017 04, Intangibles – Goodwill and Other December 15, 2019 not In June 2016, 2016 13, Financial Instruments – Credit Losses December 15, 2019 not |
Note 3 - Net Income Per Commo_2
Note 3 - Net Income Per Common Share (Tables) | 9 Months Ended |
Sep. 30, 2019 | |
Notes Tables | |
Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] | Three Months Ended Nine Months Ended September 30, September 30, (in thousands, except share and per share amounts) 2019 2018 2019 2018 Net income $ 16,792 $ 20,937 $ 48,469 $ 57,302 Basic - weighted-average shares outstanding: 26,846,030 27,038,585 26,894,420 26,963,205 Effect of dilutive securities: Employee stock options and other 159,311 299,301 178,453 305,106 Diluted - weighted-average shares outstanding: 27,005,341 27,337,886 27,072,873 27,268,311 Net income per share: Basic $ 0.63 $ 0.77 $ 1.80 $ 2.13 Diluted $ 0.62 $ 0.77 $ 1.79 $ 2.10 |
Note 4 - Goodwill and Other I_2
Note 4 - Goodwill and Other Intangible Assets (Tables) | 9 Months Ended |
Sep. 30, 2019 | |
Notes Tables | |
Schedule of Finite-Lived Intangible Assets [Table Text Block] | September 30, 2019 December 31, 2018 Useful Weighted Average (in thousands) Gross Accumulated Amortization Net Gross Accumulated Amortization Net Life Useful Life Intangible assets with finite lives: Marketing assets $ 930 $ (504 ) $ 426 $ 930 $ (434 ) $ 496 10.0 4.6 Non-compete agreement 270 (218 ) 52 270 (206 ) 64 2.0 - 5.0 3.3 Trade secrets 250 (250 ) - 250 (233 ) 17 5.0 0.0 Trade names 1,080 (945 ) 135 1,080 (540 ) 540 2.0 0.3 Software technology 13,229 (1,933 ) 11,296 12,229 (997 ) 11,232 10.0 8.3 Customer relationships 10,070 (3,721 ) 6,349 10,070 (2,569 ) 7,501 6.0 - 9.0 4.1 Total intangible assets $ 25,829 $ (7,571 ) $ 18,258 $ 24,829 $ (4,979 ) $ 19,850 |
Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block] | (in thousands) Estimated Remaining 2019 $ 889 2020 3,016 2021 3,016 2022 3,016 2023 2,813 Thereafter 5,508 Total estimated amortization expense $ 18,258 |
Note 5 - Fair Value Measureme_2
Note 5 - Fair Value Measurements (Tables) | 9 Months Ended |
Sep. 30, 2019 | |
Notes Tables | |
Fair Value, Assets Measured on Recurring Basis [Table Text Block] | September 30, 2019 December 31, 2018 (in thousands) Level 1 Level 2 Level 3 Level 1 Level 2 Level 3 Financial Assets: Cash and cash equivalents Money market mutual fund $ 58,563 $ - $ - $ 8,943 $ - $ - Total $ 58,563 $ - $ - $ 8,943 $ - $ - |
Note 6 - Marketable Securities
Note 6 - Marketable Securities (Tables) | 9 Months Ended |
Sep. 30, 2019 | |
Notes Tables | |
Debt Securities, Held-to-maturity [Table Text Block] | September 30, 2019 (in thousands) Cost Unrealized Gains Unrealized Losses Fair Value U.S. municipal securities $ 5,612 $ 11 $ (3 ) $ 5,620 Corporate debt securities 16,503 100 (1 ) 16,602 U.S. government agency securities 8,340 1 (10 ) 8,331 Certificates of deposit/time deposits 1,479 22 (1 ) 1,500 Commercial paper 1,491 - (1 ) 1,490 Total marketable securities $ 33,425 $ 134 $ (16 ) $ 33,543 December 31, 2018 (in thousands) Cost Unrealized Gains Unrealized Losses Fair Value U.S. municipal securities $ 17,509 $ 1 $ (33 ) $ 17,477 Corporate debt securities 31,769 - (96 ) 31,673 U.S. government agency securities 16,843 - (88 ) 16,755 Certificates of deposit/time deposits 4,208 - (25 ) 4,183 Total marketable securities $ 70,329 $ 1 $ (242 ) $ 70,088 |
Investments Classified by Contractual Maturity Date [Table Text Block] | September 30, (in thousands) 2019 Due in one year or less $ 23,642 Due after one year through five years 9,783 Total marketable securities $ 33,425 |
Note 7 - Inventory (Tables)
Note 7 - Inventory (Tables) | 9 Months Ended |
Sep. 30, 2019 | |
Notes Tables | |
Schedule of Inventory, Current [Table Text Block] | September 30, December 31, (in thousands) 2019 2018 Raw materials $ 9,328 $ 9,560 Work in process 304 792 Total inventory 9,632 10,352 Allowance for obsolescence (184 ) (265 ) Inventory, net of allowance $ 9,448 $ 10,087 |
Note 8 - Leases (Tables)
Note 8 - Leases (Tables) | 9 Months Ended |
Sep. 30, 2019 | |
Notes Tables | |
Schedule of Operating Lease Assets and Liabilities [Table Text Block] | (in thousands) September 30, 2019 Operating lease assets $ 12,008 Current operating lease liabilities $ 3,364 Long-term operating lease liabilities 9,006 Total operating lease liabilities $ 12,370 |
Schedule of Lease Expense [Table Text Block] | (in thousands) Three Months Ended September 30, 2019 Nine Months Ended September 30, 2019 Operating lease cost $ 967 $ 2,984 Variable lease cost 306 811 Total lease cost $ 1,273 $ 3,795 |
Lessee, Operating Lease, Liability, Maturity [Table Text Block] | (in thousands) Operating Leases Year Ending December 31, 2019 (excluding nine months ended September 30, 2019) $ 1,216 2020 3,514 2021 2,770 2022 2,580 2023 1,041 After 2023 2,050 Total future minimum lease payments 13,171 Less interest (801 ) Present value of lease liabilities $ 12,370 |
Schedule of Lease Terms and Discount Rates [Table Text Block] |
<tbody>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);">
<td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="padding-bottom: 1px; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td colspan="2" style="text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt;"><b><b><em style="font-weight: inherit; font-style: normal;">September 30, 2019</em></b></b></p> </td>
<td style="font-family: "Times New Roman", Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> </td>
</tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);">
<td style="width: 82%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <p style="font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Remaining Lease Term (Years)</p> </td>
<td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="width: 15%; text-align: right; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;">4.8</td>
<td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;"> </td>
</tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);">
<td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <p style="font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Discount Rate</p> </td>
<td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="width: 15%; text-align: right; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;">2.6</td>
<td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
</tr>
</tbody>
</table>
" id="sjs-B7" xml:space="preserve"> <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 85%; text-indent: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-right: 7.5%; margin-left: 7.5%;"> <tbody> <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="padding-bottom: 1px; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td colspan="2" style="text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt;"><b><b><em style="font-weight: inherit; font-style: normal;">September 30, 2019</em></b></b></p> </td> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> </td> </tr> <tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"> <td style="width: 82%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <p style="font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Remaining Lease Term (Years)</p> </td> <td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="width: 15%; text-align: right; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;">4.8</td> <td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;"> </td> </tr> <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <p style="font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Discount Rate</p> </td> <td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="width: 15%; text-align: right; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;">2.6</td> <td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;">%</td> </tr> </tbody> </table> |
Schedule of Lease Cash Flow Information [Table Text Block] |
<tbody>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);">
<td style="width: 83%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <p style="font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td>
<td style="padding-bottom: 1px; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td colspan="2" style="text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt;"><b><b><b>Nine Months Ended </b></b></b></p> <p style="margin: 0pt; text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt;"><b><b><b>September 30, 2019</b></b></b></p> </td>
<td style="font-family: "Times New Roman", Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> </td>
</tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);">
<td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <p style="font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash paid for amounts included in the measurement of operating lease liabilities:</p> </td>
<td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
</tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);">
<td style="padding-left: 9pt; font-family: "Times New Roman", Times, serif; font-size: 10pt;">Operating cash flows for operating leases</td>
<td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="width: 1%; padding-left: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0px;">$</td>
<td style="width: 14%; text-align: right; padding-left: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0px;">3,878</td>
<td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;"> </td>
</tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);">
<td style="margin: 0px; padding: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt;">Lease assets obtained in exchange for new operating lease liabilities</td>
<td style="margin: 0px; padding: 0px; width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="margin: 0px; padding: 0px; width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
<td style="margin: 0px; padding: 0px; width: 14%; text-align: right; font-family: "Times New Roman", Times, serif; font-size: 10pt;">1,837</td>
<td style="margin: 0px; padding: 0px; width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td>
</tr>
</tbody>
</table>
" id="sjs-B8" xml:space="preserve"> <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"> <tbody> <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"> <td style="width: 83%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <p style="font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td> <td style="padding-bottom: 1px; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td colspan="2" style="text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt;"><b><b><b>Nine Months Ended </b></b></b></p> <p style="margin: 0pt; text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt;"><b><b><b>September 30, 2019</b></b></b></p> </td> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> </td> </tr> <tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <p style="font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash paid for amounts included in the measurement of operating lease liabilities:</p> </td> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> </tr> <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"> <td style="padding-left: 9pt; font-family: "Times New Roman", Times, serif; font-size: 10pt;">Operating cash flows for operating leases</td> <td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="width: 1%; padding-left: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0px;">$</td> <td style="width: 14%; text-align: right; padding-left: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0px;">3,878</td> <td style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;"> </td> </tr> <tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"> <td style="margin: 0px; padding: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt;">Lease assets obtained in exchange for new operating lease liabilities</td> <td style="margin: 0px; padding: 0px; width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="margin: 0px; padding: 0px; width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> <td style="margin: 0px; padding: 0px; width: 14%; text-align: right; font-family: "Times New Roman", Times, serif; font-size: 10pt;">1,837</td> <td style="margin: 0px; padding: 0px; width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt;"> </td> </tr> </tbody> </table> |
Note 9 - Stock-based Compensa_2
Note 9 - Stock-based Compensation (Tables) | 9 Months Ended |
Sep. 30, 2019 | |
Notes Tables | |
Share-based Payment Arrangement, Option, Activity [Table Text Block] | Weighted- Average Stock Options Exercise Price Options outstanding at December 31, 2018 252,616 $ 64.71 Granted 53,708 105.81 Exercised (11,921 ) 56.25 Forfeited (10,833 ) 83.74 Options outstanding at September 30, 2019 283,570 $ 72.12 Exercisable at September 30, 2019 154,539 $ 58.18 |
Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block] | Nine Months Ended September 30, 2019 2018 Risk-free interest rate 2.35 - 2.58% 2.52 - 3.07% Expected life (years) 6.25 6.25 Expected volatility 42.52 - 42.74% 41.68 - 42.22% Expected dividend yield 0% 0% |
Share-based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block] | Weighted- Average Grant Date Restricted Fair Value Stock Per Share Restricted stock at December 31, 2018 323,921 $ 79.85 Granted 114,467 106.41 Restrictions lapsed (95,884 ) 79.32 Forfeited (20,299 ) 86.54 Restricted stock at September 30, 2019 322,205 $ 89.02 |
Schedule of Nonvested Performance-based Units Activity [Table Text Block] | Weighted- Average Grant Date Performance Fair Value Stock Per Share Performance stock at December 31, 2018 52,140 $ 76.54 Granted 21,434 104.99 Restrictions lapsed - - Performance change (12,854 ) 58.35 Forfeited (2,375 ) 105.37 Performance stock at September 30, 2019 58,345 $ 89.82 |
Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block] | Nine Months Ended September 30, 2019 2018 Risk-free interest rate 2.33 - 2.35% 1.48 - 2.06% Expected life (months) 6.00 6.00 Expected volatility 37.36 - 53.57% 24.49 - 31.50% Expected dividend yield 0% 0% |
Note 10 - Accumulated Other C_2
Note 10 - Accumulated Other Comprehensive Loss (Tables) | 9 Months Ended |
Sep. 30, 2019 | |
Notes Tables | |
Comprehensive Income (Loss) [Table Text Block] | Three Months Ended Nine Months Ended September 30, September 30, (in thousands) 2019 2018 2019 2018 Foreign currency translation adjustments Balance at beginning of period $ (8,494 ) $ (6,359 ) $ (8,492 ) $ (5,234 ) Other comprehensive income (loss) before reclassifications (2,150 ) (879 ) (2,152 ) (2,004 ) Amounts reclassified from accumulated other comprehensive loss - - - - Net current-period other comprehensive income (loss) (2,150 ) (879 ) (2,152 ) (2,004 ) Balance at end of period $ (10,644 ) $ (7,238 ) $ (10,644 ) $ (7,238 ) |
Note 12 - Segment Reporting (Ta
Note 12 - Segment Reporting (Tables) | 9 Months Ended |
Sep. 30, 2019 | |
Notes Tables | |
Income from Operations by Geographic Area [Table Text Block] | Three Months Ended September 30, Nine Months Ended September 30, (in thousands) 2019 2018 2019 2018 Income from Operations: United States $ 28,109 $ 30,479 $ 82,367 $ 88,579 Europe 4,045 5,465 12,022 12,835 Corporate Unallocated and Japan (10,881 ) (10,913 ) (34,095 ) (32,671 ) Total Income from Operations $ 21,273 $ 25,031 $ 60,294 $ 68,743 |
Long-lived Assets by Geographic Areas [Table Text Block] | September 30, December 31, (in thousands) 2019 2018 Total long-lived assets: United States $ 203,771 $ 185,979 Europe 40,353 34,577 Japan 8,455 7,445 Total Assets $ 252,579 $ 228,001 |
Operating Segments [Member] | |
Notes Tables | |
Revenue from External Customers by Geographic Areas [Table Text Block] | Three Months Ended September 30, Nine Months Ended September 30, (in thousands) 2019 2018 2019 2018 Revenue: United States $ 92,916 $ 90,732 $ 271,877 $ 261,253 Europe 20,721 21,273 62,915 61,431 Japan 3,818 3,425 12,047 10,143 Total revenue $ 117,455 $ 115,430 $ 346,839 $ 332,827 |
Note 2 - Recent Accounting Pr_2
Note 2 - Recent Accounting Pronouncements (Details Textual) - USD ($) $ in Thousands | Sep. 30, 2019 | Jan. 01, 2019 | Dec. 31, 2018 |
Operating Lease, Right-of-Use Asset | $ 12,008 | $ 0 | |
Operating Lease, Liability, Total | $ 12,370 | ||
Accounting Standards Update 2016-02 [Member] | |||
Operating Lease, Right-of-Use Asset | $ 13,100 | ||
Operating Lease, Liability, Total | $ 13,100 |
Note 3 - Net Income Per Commo_3
Note 3 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details) - USD ($) $ / shares in Units, $ in Thousands | 3 Months Ended | 9 Months Ended | ||||||
Sep. 30, 2019 | Jun. 30, 2019 | Mar. 31, 2019 | Sep. 30, 2018 | Jun. 30, 2018 | Mar. 31, 2018 | Sep. 30, 2019 | Sep. 30, 2018 | |
Net income | $ 16,792 | $ 16,166 | $ 15,511 | $ 20,937 | $ 18,314 | $ 18,051 | $ 48,469 | $ 57,302 |
Basic - weighted-average shares outstanding: (in shares) | 26,846,030 | 27,038,585 | 26,894,420 | 26,963,205 | ||||
Employee stock options and other (in shares) | 159,311 | 299,301 | 178,453 | 305,106 | ||||
Diluted - weighted-average shares outstanding: (in shares) | 27,005,341 | 27,337,886 | 27,072,873 | 27,268,311 | ||||
Basic (in dollars per share) | $ 0.63 | $ 0.77 | $ 1.80 | $ 2.13 | ||||
Diluted (in dollars per share) | $ 0.62 | $ 0.77 | $ 1.79 | $ 2.10 |
Note 4 - Goodwill and Other I_3
Note 4 - Goodwill and Other Intangible Assets (Details Textual) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2019 | Sep. 30, 2018 | Sep. 30, 2019 | Sep. 30, 2018 | |
Goodwill, Period Increase (Decrease), Total | $ 0 | $ 0 | ||
Amortization of Intangible Assets, Total | $ 900 | $ 800 | $ 2,600 | $ 2,400 |
Note 4 - Goodwill and Other I_4
Note 4 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details) - USD ($) $ in Thousands | 9 Months Ended | |
Sep. 30, 2019 | Dec. 31, 2018 | |
Gross | $ 25,829 | $ 24,829 |
Accumulated Amortization | (7,571) | (4,979) |
Net | 18,258 | 19,850 |
Marketing-Related Intangible Assets [Member] | ||
Gross | 930 | 930 |
Accumulated Amortization | (504) | (434) |
Net | $ 426 | 496 |
Useful Life (Year) | 10 years | |
Weighted average useful life remaining (Year) | 4 years 7 months 6 days | |
Noncompete Agreements [Member] | ||
Gross | $ 270 | 270 |
Accumulated Amortization | (218) | (206) |
Net | $ 52 | 64 |
Weighted average useful life remaining (Year) | 3 years 3 months 18 days | |
Noncompete Agreements [Member] | Minimum [Member] | ||
Useful Life (Year) | 2 years | |
Noncompete Agreements [Member] | Maximum [Member] | ||
Useful Life (Year) | 5 years | |
Trade Secrets [Member] | ||
Gross | $ 250 | 250 |
Accumulated Amortization | (250) | (233) |
Net | $ 0 | 17 |
Useful Life (Year) | 5 years | |
Weighted average useful life remaining (Year) | 0 years | |
Trade Names [Member] | ||
Gross | $ 1,080 | 1,080 |
Accumulated Amortization | (945) | (540) |
Net | $ 135 | 540 |
Useful Life (Year) | 2 years | |
Weighted average useful life remaining (Year) | 3 months 18 days | |
Computer Software, Intangible Asset [Member] | ||
Gross | $ 13,229 | 12,229 |
Accumulated Amortization | (1,933) | (997) |
Net | $ 11,296 | 11,232 |
Useful Life (Year) | 10 years | |
Weighted average useful life remaining (Year) | 8 years 3 months 18 days | |
Customer Relationships [Member] | ||
Gross | $ 10,070 | 10,070 |
Accumulated Amortization | (3,721) | (2,569) |
Net | $ 6,349 | $ 7,501 |
Weighted average useful life remaining (Year) | 4 years 1 month 6 days | |
Customer Relationships [Member] | Minimum [Member] | ||
Useful Life (Year) | 6 years | |
Customer Relationships [Member] | Maximum [Member] | ||
Useful Life (Year) | 9 years |
Note 4 - Goodwill and Other I_5
Note 4 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details) - USD ($) $ in Thousands | Sep. 30, 2019 | Dec. 31, 2018 |
Remaining 2019 | $ 889 | |
2020 | 3,016 | |
2021 | 3,016 | |
2022 | 3,016 | |
2023 | 2,813 | |
Thereafter | 5,508 | |
Total estimated amortization expense | $ 18,258 | $ 19,850 |
Note 5 - Fair Value Measureme_3
Note 5 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details) - Fair Value, Recurring [Member] - USD ($) $ in Thousands | Sep. 30, 2019 | Dec. 31, 2018 |
Fair Value, Inputs, Level 1 [Member] | ||
Money market mutual fund | $ 58,563 | $ 8,943 |
Total | 58,563 | 8,943 |
Fair Value, Inputs, Level 2 [Member] | ||
Money market mutual fund | 0 | 0 |
Total | 0 | 0 |
Fair Value, Inputs, Level 3 [Member] | ||
Money market mutual fund | 0 | 0 |
Total | $ 0 | $ 0 |
Note 6 - Marketable Securitie_2
Note 6 - Marketable Securities - Short-term and Long-term Marketable Securities (Details) - USD ($) $ in Thousands | Sep. 30, 2019 | Dec. 31, 2018 |
Amortized Cost | $ 33,425 | $ 70,329 |
Unrealized Gains | 134 | 1 |
Unrealized Losses | (16) | (242) |
Fair Value | 33,543 | 70,088 |
Bank Time Deposits [Member] | ||
Amortized Cost | 1,479 | 4,208 |
Unrealized Gains | 22 | 0 |
Unrealized Losses | (1) | (25) |
Fair Value | 1,500 | 4,183 |
US States and Political Subdivisions Debt Securities [Member] | ||
Amortized Cost | 5,612 | 17,509 |
Unrealized Gains | 11 | 1 |
Unrealized Losses | (3) | (33) |
Fair Value | 5,620 | 17,477 |
Corporate Debt Securities [Member] | ||
Amortized Cost | 16,503 | 31,769 |
Unrealized Gains | 100 | 0 |
Unrealized Losses | (1) | (96) |
Fair Value | 16,602 | 31,673 |
US Government Agencies Debt Securities [Member] | ||
Amortized Cost | 8,340 | 16,843 |
Unrealized Gains | 1 | 0 |
Unrealized Losses | (10) | (88) |
Fair Value | 8,331 | $ 16,755 |
Commercial Paper, Not Included with Cash and Cash Equivalents [Member] | ||
Amortized Cost | 1,491 | |
Unrealized Gains | 0 | |
Unrealized Losses | (1) | |
Fair Value | $ 1,490 |
Note 6 - Marketable Securitie_3
Note 6 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details) - USD ($) $ in Thousands | Sep. 30, 2019 | Dec. 31, 2018 |
Due in one year or less | $ 23,642 | |
Due after one year through five years | 9,783 | |
Total marketable securities | $ 33,425 | $ 70,329 |
Note 7 - Inventory - Inventory
Note 7 - Inventory - Inventory (Details) - USD ($) $ in Thousands | Sep. 30, 2019 | Dec. 31, 2018 |
Raw materials | $ 9,328 | $ 9,560 |
Work in process | 304 | 792 |
Total inventory | 9,632 | 10,352 |
Allowance for obsolescence | (184) | (265) |
Inventory, net of allowance | $ 9,448 | $ 10,087 |
Note 8 - Leases (Details Textua
Note 8 - Leases (Details Textual) Pure in Thousands, $ in Thousands | Sep. 30, 2019USD ($) | Jan. 01, 2019USD ($) | Dec. 31, 2018USD ($) |
Operating Lease, Right-of-Use Asset | $ 12,008 | $ 0 | |
Operating Lease, Liability, Total | $ 12,370 | ||
Lessee, Financial Lease, Liability, Number of Leases | 0 | ||
Lessee, Operating Lease, Lease Not yet Commenced, Number of Leases | 0 | ||
Minimum [Member] | Office Space, Manufacturing Facilities, and Certain Company Vehicles and Equipment [Member] | |||
Lessee, Operating Lease, Term of Contract | 1 year | ||
Maximum [Member] | Office Space, Manufacturing Facilities, and Certain Company Vehicles and Equipment [Member] | |||
Lessee, Operating Lease, Term of Contract | 10 years | ||
Accounting Standards Update 2016-02 [Member] | |||
Operating Lease, Right-of-Use Asset | $ 13,100 | ||
Operating Lease, Liability, Total | $ 13,100 |
Note 8 - Leases - Balance Sheet
Note 8 - Leases - Balance Sheet Information (Details) - USD ($) $ in Thousands | Sep. 30, 2019 | Dec. 31, 2018 |
Operating lease assets | $ 12,008 | $ 0 |
Current operating lease liabilities | 3,364 | 0 |
Long-term operating lease liabilities | 9,006 | $ 0 |
Total operating lease liabilities | $ 12,370 |
Note 8 - Leases - Lease Expense
Note 8 - Leases - Lease Expense (Details) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended |
Sep. 30, 2019 | Sep. 30, 2019 | |
Operating lease cost | $ 967 | $ 2,984 |
Variable lease cost | 306 | 811 |
Total lease cost | $ 1,273 | $ 3,795 |
Note 8 - Leases - Maturities of
Note 8 - Leases - Maturities of Operating Lease Liabilities (Details) $ in Thousands | Sep. 30, 2019USD ($) |
2019 (excluding nine months ended September 30, 2019) | $ 1,216 |
2020 | 3,514 |
2021 | 2,770 |
2022 | 2,580 |
2023 | 1,041 |
After 2023 | 2,050 |
Total future minimum lease payments | 13,171 |
Less interest | (801) |
Present value of lease liabilities | $ 12,370 |
Note 8 - Leases - Weighted Aver
Note 8 - Leases - Weighted Average Remaining Terms and Discount Rates (Details) | Sep. 30, 2019 |
Weighted Average Remaining Lease Term (Years) (Year) | 4 years 9 months 18 days |
Weighted Average Discount Rate | 2.60% |
Note 8 - Leases - Cash Flow Inf
Note 8 - Leases - Cash Flow Information (Details) $ in Thousands | 9 Months Ended |
Sep. 30, 2019USD ($) | |
Operating cash flows for operating leases | $ 3,878 |
Lease assets obtained in exchange for new operating lease liabilities | $ 1,837 |
Note 9 - Stock-based Compensa_3
Note 9 - Stock-based Compensation (Details Textual) - USD ($) $ / shares in Units, $ in Millions | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2019 | Sep. 30, 2018 | Sep. 30, 2019 | Sep. 30, 2018 | |
Share-based Payment Arrangement, Expense | $ 3.2 | $ 3 | $ 9.7 | $ 8 |
Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value | $ 47.84 | |||
Share-based Payment Arrangement, Option [Member] | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Expiration Period | 10 years | |||
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total | 4.2 | $ 4.2 | ||
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition | 2 years 9 months 18 days | |||
Share-based Payment Arrangement, Option [Member] | Minimum [Member] | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period | 4 years | |||
Share-based Payment Arrangement, Option [Member] | Maximum [Member] | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period | 5 years | |||
ESPP [Member] | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Discount from Market Price, Offering Date | 15.00% | |||
Employee Stock Purchase Plan, Offering Period | 6 months | |||
Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Percent | 85.00% | |||
Restricted Stock [Member] | ||||
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total | 24.4 | $ 24.4 | ||
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition | 2 years 9 months 18 days | |||
Restricted Stock [Member] | Minimum [Member] | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period | 4 years | |||
Restricted Stock [Member] | Maximum [Member] | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period | 5 years | |||
Performance Shares [Member] | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period | 3 years | |||
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total | $ 2.7 | $ 2.7 | ||
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition | 1 year 10 months 24 days | |||
Percentage of Target Number Capable of Being Earned and Vesting, Lower Limit | 0.00% | 0.00% | ||
Percentage of Target Number Capable of Being Earned and Vesting, Upper Limit | 150.00% | 150.00% |
Note 9 - Stock-based Compensa_4
Note 9 - Stock-based Compensation - Stock Option Activity (Details) | 9 Months Ended |
Sep. 30, 2019$ / sharesshares | |
Options outstanding (in shares) | shares | 252,616 |
Options outstanding, weighted-average exercise price (in dollars per share) | $ / shares | $ 64.71 |
Granted (in shares) | shares | 53,708 |
Granted, weighted-average exercise price (in dollars per share) | $ / shares | $ 105.81 |
Exercised (in shares) | shares | (11,921) |
Exercised, weighted-average exercise price (in dollars per share) | $ / shares | $ 56.25 |
Forfeited (in shares) | shares | (10,833) |
Forfeited, weighted-average exercise price (in dollars per share) | $ / shares | $ 83.74 |
Options outstanding (in shares) | shares | 283,570 |
Options outstanding, weighted-average exercise price (in dollars per share) | $ / shares | $ 72.12 |
Options exercisable (in shares) | shares | 154,539 |
Options exercisable, weighted-average exercise price (in dollars per share) | $ / shares | $ 58.18 |
Note 9 - Stock-based Compensa_5
Note 9 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details) - Share-based Payment Arrangement, Option [Member] | 9 Months Ended | |
Sep. 30, 2019 | Sep. 30, 2018 | |
Expected life (Year) | 6 years 3 months | 6 years 3 months |
Expected dividend yield | 0.00% | 0.00% |
Minimum [Member] | ||
Risk-free interest rate | 2.35% | 2.52% |
Expected volatility | 42.52% | 41.68% |
Maximum [Member] | ||
Risk-free interest rate | 2.58% | 3.07% |
Expected volatility | 42.74% | 42.22% |
Note 9 - Stock-based Compensa_6
Note 9 - Stock-based Compensation - Restricted Stock Options (Details) - Restricted Stock [Member] | 9 Months Ended |
Sep. 30, 2019$ / sharesshares | |
Restricted stock (in shares) | shares | 323,921 |
Restricted stock, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 79.85 |
Granted (in shares) | shares | 114,467 |
Granted, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 106.41 |
Restrictions lapsed (in shares) | shares | (95,884) |
Restrictions lapsed, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 79.32 |
Forfeited (in shares) | shares | (20,299) |
Forfeited, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 86.54 |
Restricted stock (in shares) | shares | 322,205 |
Restricted stock, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 89.02 |
Note 9 - Stock-based Compensa_7
Note 9 - Stock-based Compensation - Performance Stock (Details) - Performance Shares [Member] | 9 Months Ended |
Sep. 30, 2019$ / sharesshares | |
Restricted stock (in shares) | shares | 52,140 |
Restricted stock, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 76.54 |
Granted (in shares) | shares | 21,434 |
Granted, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 104.99 |
Restrictions lapsed (in shares) | shares | 0 |
Restrictions lapsed, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 0 |
Performance change (in shares) | shares | (12,854) |
Performance change, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 58.35 |
Forfeited (in shares) | shares | (2,375) |
Forfeited, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 105.37 |
Restricted stock (in shares) | shares | 58,345 |
Restricted stock, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 89.82 |
Note 9 - Stock-based Compensa_8
Note 9 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details) - ESPP [Member] | 9 Months Ended | |
Sep. 30, 2019 | Sep. 30, 2018 | |
Expected life (Month) | 6 months | 6 months |
Expected dividend yield | 0.00% | 0.00% |
Minimum [Member] | ||
Risk-free interest rate | 2.33% | 1.48% |
Expected volatility | 37.36% | 24.49% |
Maximum [Member] | ||
Risk-free interest rate | 2.35% | 2.06% |
Expected volatility | 53.57% | 31.50% |
Note 10 - Accumulated Other C_3
Note 10 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2019 | Sep. 30, 2018 | Sep. 30, 2019 | Sep. 30, 2018 | |
Balance | $ 558,113 | $ 506,253 | $ 541,497 | $ 461,215 |
Balance | 564,097 | 531,206 | 564,097 | 531,206 |
Accumulated Foreign Currency Adjustment Attributable to Parent [Member] | ||||
Balance | (8,494) | (6,359) | (8,492) | (5,234) |
Other comprehensive income (loss) before reclassifications | (2,150) | (879) | (2,152) | (2,004) |
Amounts reclassified from accumulated other comprehensive loss | 0 | 0 | 0 | 0 |
Net current-period other comprehensive income (loss) | (2,150) | (879) | (2,152) | (2,004) |
Balance | $ (10,644) | $ (7,238) | $ (10,644) | $ (7,238) |
Note 11 - Income Taxes (Details
Note 11 - Income Taxes (Details Textual) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | |||
Sep. 30, 2019 | Sep. 30, 2018 | Sep. 30, 2019 | Sep. 30, 2018 | Dec. 31, 2018 | |
Income Tax Expense (Benefit), Total | $ 4,709 | $ 4,484 | $ 13,391 | $ 12,817 | |
Effective Income Tax Rate Reconciliation, Percent, Total | 21.90% | 17.60% | 21.60% | 18.30% | |
Effective Income Tax Rate, Increase (Decrease), Percentage | 4.30% | 3.30% | |||
Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent | 21.00% | ||||
Unrecognized Tax Benefits, Ending Balance | $ 4,400 | $ 4,400 | $ 4,100 |
Note 12 - Segment Reporting - R
Note 12 - Segment Reporting - Revenue From Operations by Reportable Segment (Details) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2019 | Sep. 30, 2018 | Sep. 30, 2019 | Sep. 30, 2018 | |
Revenue | $ 117,455 | $ 115,430 | $ 346,839 | $ 332,827 |
Operating Segments [Member] | ||||
Revenue | 117,455 | 115,430 | 346,839 | 332,827 |
Operating Segments [Member] | United States Segment [Member] | ||||
Revenue | 92,916 | 90,732 | 271,877 | 261,253 |
Operating Segments [Member] | Europe Segment [Member] | ||||
Revenue | 20,721 | 21,273 | 62,915 | 61,431 |
Operating Segments [Member] | Japan Segment [Member] | ||||
Revenue | $ 3,818 | $ 3,425 | $ 12,047 | $ 10,143 |
Note 12 - Segment Reporting - I
Note 12 - Segment Reporting - Income From Operations (Details) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2019 | Sep. 30, 2018 | Sep. 30, 2019 | Sep. 30, 2018 | |
Income from operations | $ 21,273 | $ 25,031 | $ 60,294 | $ 68,743 |
Operating Segments [Member] | United States Segment [Member] | ||||
Income from operations | 28,109 | 30,479 | 82,367 | 88,579 |
Operating Segments [Member] | Europe Segment [Member] | ||||
Income from operations | 4,045 | 5,465 | 12,022 | 12,835 |
Operating Segments [Member] | Corporate Unallocated and Japan Segment[Member] | ||||
Income from operations | (10,881) | (10,913) | (34,095) | (32,671) |
Corporate and Reconciling Items [Member] | ||||
Income from operations | $ 21,273 | $ 25,031 | $ 60,294 | $ 68,743 |
Note 12 - Segment Reporting - L
Note 12 - Segment Reporting - Long-lived Assets by Geographic Region (Details) - USD ($) $ in Thousands | Sep. 30, 2019 | Dec. 31, 2018 |
Long-lived assets | $ 252,579 | $ 228,001 |
Operating Segments [Member] | United States Segment [Member] | ||
Long-lived assets | 203,771 | 185,979 |
Operating Segments [Member] | Europe Segment [Member] | ||
Long-lived assets | 40,353 | 34,577 |
Operating Segments [Member] | Japan Segment [Member] | ||
Long-lived assets | $ 8,455 | $ 7,445 |