Document And Entity Information
Document And Entity Information - shares | 3 Months Ended | |
Mar. 31, 2019 | Apr. 25, 2019 | |
Document Information [Line Items] | ||
Entity Registrant Name | Proto Labs Inc | |
Entity Central Index Key | 0001443669 | |
Trading Symbol | prlb | |
Current Fiscal Year End Date | --12-31 | |
Entity Filer Category | Large Accelerated Filer | |
Entity Current Reporting Status | Yes | |
Entity Emerging Growth Company | false | |
Entity Small Business | false | |
Entity Common Stock, Shares Outstanding (in shares) | 26,848,544 | |
Document Type | 10-Q | |
Document Period End Date | Mar. 31, 2019 | |
Document Fiscal Year Focus | 2019 | |
Document Fiscal Period Focus | Q1 | |
Amendment Flag | false |
Consolidated Balance Sheets (Cu
Consolidated Balance Sheets (Current Period Unaudited) - USD ($) $ in Thousands | Mar. 31, 2019 | Dec. 31, 2018 |
Current assets | ||
Cash and cash equivalents | $ 85,350 | $ 85,046 |
Short-term marketable securities | 35,045 | 46,750 |
Accounts receivable, net of allowance for doubtful accounts of $939 and $919 as of March 31, 2019 and December 31, 2018, respectively | 61,535 | 59,155 |
Inventory | 9,356 | 10,087 |
Prepaid expenses and other current assets | 8,613 | 8,567 |
Income taxes receivable | 2,852 | 5,757 |
Total current assets | 202,751 | 215,362 |
Property and equipment, net | 234,211 | 228,001 |
Goodwill | 128,752 | 128,752 |
Other intangible assets, net | 18,979 | 19,850 |
Long-term marketable securities | 18,262 | 23,579 |
Operating lease assets | 11,965 | |
Other long-term assets | 3,676 | 3,441 |
Total assets | 618,596 | 618,985 |
Current liabilities | ||
Accounts payable | 16,672 | 17,411 |
Accrued compensation | 10,129 | 18,130 |
Accrued liabilities and other | 11,027 | 16,702 |
Current operating lease liabilities | 3,021 | |
Income taxes payable | 594 | 491 |
Total current liabilities | 41,443 | 52,734 |
Long-term operating lease liabilities | 9,107 | |
Long-term deferred tax liabilities | 20,549 | 20,162 |
Other long-term liabilities | 4,702 | 4,592 |
Total liabilities | 75,801 | 77,488 |
Shareholders' equity | ||
Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of March 31, 2019 and December 31, 2018 | ||
Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 26,846,981 and 26,984,747 shares as of March 31, 2019 and December 31, 2018, respectively | 27 | 27 |
Additional paid-in capital | 259,611 | 258,502 |
Retained earnings | 291,173 | 291,460 |
Accumulated other comprehensive loss | (8,016) | (8,492) |
Total shareholders' equity | 542,795 | 541,497 |
Total liabilities and shareholders' equity | $ 618,596 | $ 618,985 |
Consolidated Balance Sheets (_2
Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals) - USD ($) $ in Thousands | Mar. 31, 2019 | Dec. 31, 2018 |
Allowance for doubtful accounts | $ 939 | $ 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,846,981 | 26,984,747 |
Common stock, shares outstanding (in shares) | 26,846,981 | 26,984,747 |
Consolidated Statements of Comp
Consolidated Statements of Comprehensive Income (Unaudited) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2019 | Mar. 31, 2018 | |
Statements of Operations: | ||
Revenue | $ 113,452 | $ 107,745 |
Cost of revenue | 54,592 | 49,837 |
Gross profit | 58,860 | 57,908 |
Operating expenses | ||
Marketing and sales | 18,577 | 16,572 |
Research and development | 8,013 | 6,665 |
General and administrative | 12,822 | 12,943 |
Total operating expenses | 39,412 | 36,180 |
Income from operations | 19,448 | 21,728 |
Other income, net | 213 | 178 |
Income before income taxes | 19,661 | 21,906 |
Provision for income taxes | 4,150 | 3,855 |
Net income | $ 15,511 | $ 18,051 |
Net income per share: | ||
Basic (in dollars per share) | $ 0.58 | $ 0.67 |
Diluted (in dollars per share) | $ 0.57 | $ 0.66 |
Shares used to compute net income per share: | ||
Basic (in shares) | 26,963,366 | 26,879,388 |
Diluted (in shares) | 27,177,039 | 27,197,099 |
Comprehensive Income (net of tax) | ||
Comprehensive income | $ 15,987 | $ 20,444 |
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) | |||||
Repurchases of common stock | |||||
Net income | 18,051 | 18,051 | |||
Foreign currency translation adjustment | 2,393 | 2,393 | |||
Comprehensive income | 20,444 | ||||
Balance (in shares) at Mar. 31, 2018 | 26,931,546 | ||||
Balance at Mar. 31, 2018 | $ 27 | 246,282 | 244,208 | (2,841) | 487,676 |
Other comprehensive income | |||||
Foreign currency translation adjustment | 2,393 | 2,393 | |||
Comprehensive income | 20,444 | ||||
Balance (in shares) at Mar. 31, 2018 | 26,931,546 | ||||
Balance at Mar. 31, 2018 | $ 27 | 246,282 | 244,208 | (2,841) | 487,676 |
Revenue recognition transition adjustment | 1,460 | $ 1,460 | |||
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 | |||
Foreign currency translation adjustment | 476 | 476 | |||
Comprehensive income | $ 15,987 | ||||
Balance (in shares) at Mar. 31, 2019 | 26,846,981 | 26,846,981 | |||
Balance at Mar. 31, 2019 | $ 27 | 259,611 | 291,173 | (8,016) | $ 542,795 |
Other comprehensive income | |||||
Foreign currency translation adjustment | 476 | 476 | |||
Comprehensive income | $ 15,987 | ||||
Balance (in shares) at Mar. 31, 2019 | 26,846,981 | 26,846,981 | |||
Balance at Mar. 31, 2019 | $ 27 | $ 259,611 | $ 291,173 | $ (8,016) | $ 542,795 |
Consolidated Statements of Cash
Consolidated Statements of Cash Flows (Unaudited) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2019 | Mar. 31, 2018 | |
Operating activities | ||
Net income | $ 15,511 | $ 18,051 |
Adjustments to reconcile net income to net cash provided by operating activities: | ||
Depreciation and amortization | 7,439 | 6,259 |
Stock-based compensation expense | 3,040 | 2,307 |
Deferred taxes | 379 | 612 |
Amortization of held-to-maturity securities | 16 | 163 |
Other | 236 | 106 |
Changes in operating assets and liabilities: | ||
Accounts receivable | (2,386) | (4,013) |
Inventories | 739 | 807 |
Prepaid expenses and other | (211) | (1,707) |
Income taxes | 3,006 | 2,387 |
Accounts payable | (805) | 2,291 |
Accrued liabilities and other | (8,962) | (1,118) |
Net cash provided by operating activities | 18,002 | 26,145 |
Investing activities | ||
Purchases of property, equipment and other capital assets | (12,735) | (25,513) |
Cash used for acquisitions, net of cash acquired | (90) | |
Purchases of other assets and investments | (4,000) | |
Purchases of marketable securities | (3,389) | |
Proceeds from maturities of marketable securities | 17,006 | 13,551 |
Net cash provided by (used in) investing activities | 271 | (15,441) |
Financing activities | ||
Payments on debt | (5,000) | |
Proceeds from exercises of stock options | 174 | 2,880 |
Purchases of shares withheld for tax obligations | (594) | (628) |
Repurchases of common stock | (17,309) | |
Net cash used in financing activities | (17,729) | (2,748) |
Effect of exchange rate changes on cash and cash equivalents | (240) | 432 |
Net increase in cash and cash equivalents | 304 | 8,388 |
Cash and cash equivalents, beginning of period | 85,046 | 36,707 |
Cash and cash equivalents, end of period | $ 85,350 | $ 45,095 |
Note 1 - Basis of Presentation
Note 1 - Basis of Presentation | 3 Months Ended |
Mar. 31, 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 | 3 Months Ended |
Mar. 31, 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 $13.1 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, 2020 not |
Note 3 - Net Income Per Common
Note 3 - Net Income Per Common Share | 3 Months Ended |
Mar. 31, 2019 | |
Notes to Financial Statements | |
Earnings Per Share [Text Block] | Note 3 – Net Income per Common Share 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 March 31, (in thousands, except share and per share amounts) 2019 2018 Net income $ 15,511 $ 18,051 Basic - weighted-average shares outstanding: 26,963,366 26,879,388 Effect of dilutive securities: Employee stock options and other 213,673 317,711 Diluted - weighted-average shares outstanding: 27,177,039 27,197,099 Net income per share: Basic $ 0.58 $ 0.67 Diluted $ 0.57 $ 0.66 |
Note 4 - Goodwill and Other Int
Note 4 - Goodwill and Other Intangible Assets | 3 Months Ended |
Mar. 31, 2019 | |
Notes to Financial Statements | |
Goodwill and Intangible Assets Disclosure [Text Block] | Note 4 – Goodwill and Other Intangible Assets There were no three March 31, 2019. Intangible Assets other than goodwill at March 31, 2019 December 31, 2018 March 31, 2019 December 31, 2018 Useful Weighted Average (in thousands) Gross Accumulated Amortization Net Gross Accumulated Amortization Net Life Useful Life Remaining (in years) Intangible Assets with finite lives: Marketing assets $ 930 $ (457 ) $ 473 $ 930 $ (434 ) $ 496 10.0 5.1 Non-compete agreement 270 (210 ) 60 270 (206 ) 64 2.0 - 5.0 3.8 Trade secrets 250 (246 ) 4 250 (233 ) 17 5.0 0.1 Trade names 1,080 (675 ) 405 1,080 (540 ) 540 2.0 0.8 Software technology 12,229 (1,309 ) 10,920 12,229 (997 ) 11,232 10.0 8.8 Customer relationships 10,070 (2,953 ) 7,117 10,070 (2,569 ) 7,501 6.0 - 9.0 4.6 Total intangible assets $ 24,829 $ (5,850 ) $ 18,979 $ 24,829 $ (4,979 ) $ 19,850 Amortization expense for intangible assets was $0.9 $0.8 three March 31, 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 $ 2,580 2020 2,895 2021 2,895 2022 2,895 2023 2,691 Thereafter 5,023 Total estimated amortization expense $ 18,979 |
Note 5 - Fair Value Measurement
Note 5 - Fair Value Measurements | 3 Months Ended |
Mar. 31, 2019 | |
Notes to Financial Statements | |
Fair Value Disclosures [Text Block] | Note 5 – Fair Value Measurements 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 March 31, 2019 December 31, 2018 March 31, 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 $ 9,155 $ - $ - $ 8,943 $ - $ - Total $ 9,155 $ - $ - $ 8,943 $ - $ - |
Note 6 - Marketable Securities
Note 6 - Marketable Securities | 3 Months Ended |
Mar. 31, 2019 | |
Notes to Financial Statements | |
Investment [Text Block] | Note 6 – Marketable Securities 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 March 31, 2019 December 31, 2018: March 31, 2019 (in thousands) Cost Unrealized Gains Unrealized Losses Fair Value U.S. municipal securities $ 10,825 $ 7 $ (6 ) $ 10,826 Corporate debt securities 24,513 52 (27 ) 24,538 U.S. government agency securities 14,505 - (40 ) 14,465 Certificates of deposit/time deposits 3,464 10 (10 ) 3,464 Total marketable securities $ 53,307 $ 69 $ (83 ) $ 53,293 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 March 31, 2019 may may March 31, (in thousands) 2019 Due in one year or less $ 35,045 Due after one year through five years 18,262 Total marketable securities $ 53,307 |
Note 7 - Inventory
Note 7 - Inventory | 3 Months Ended |
Mar. 31, 2019 | |
Notes to Financial Statements | |
Inventory Disclosure [Text Block] | Note 7 – Inventory 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: March 31, December 31, (in thousands) 2019 2018 Raw materials $ 9,132 $ 9,560 Work in process 412 792 Total inventory 9,544 10,352 Allowance for obsolescence (188 ) (265 ) Inventory, net of allowance $ 9,356 $ 10,087 |
Note 8 - Leases
Note 8 - Leases | 3 Months Ended |
Mar. 31, 2019 | |
Notes to Financial Statements | |
Lessee, Operating Leases [Text Block] | Note 8 – Leases 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 $13.1 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 10 12 not may March 31, 2019, not no 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) March 31, 2019 Operating lease assets $ 11,965 Current operating lease liabilities $ 3,021 Long-term operating lease liabilities 9,107 Total operating lease liabilities $ 12,128 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 March 31, 2019 Operating lease cost $ 1,070 Variable lease cost 239 Total lease cost $ 1,309 Maturities of operating lease liabilities as of March 31, 2019 ( 842 (in thousands) Operating Leases Year Ending December 31, 2019 (excluding three months ended March 31, 2019) $ 2,706 2020 2,627 2021 2,307 2022 2,256 2023 1,028 After 2023 2,098 Total future minimum lease payments 13,022 Less interest (894 ) Present value of lease liabilities $ 12,128 As of March 31, 2019, no not Weighted average remaining lease term and discount rate was as follows: March 31, 2019 Weighted Average Remaining Lease Term (Years) 5.38 Weighted Average Discount Rate 2.6 % Supplemental cash flow information related to leases was as follows: (in thousands) Three Months Ended March 31, 2019 Cash paid for amounts included in the measurement of operating lease liabilities: Operating cash flows for operating leases $ 1,197 Lease assets obtained in exchange for new operating lease liabilities 13,049 |
Note 9 - Stock-based Compensati
Note 9 - Stock-based Compensation | 3 Months Ended |
Mar. 31, 2019 | |
Notes to Financial Statements | |
Share-based Payment Arrangement [Text Block] | Note 9 – Stock-Based Compensation Under the Company’s 2012 2012 2012 ten may 2012 may not Employee Stock Purchase Plan The Company’s 2012 15 six May 15 November 15, 85 first Stock-Based Compensation Expense Stock-based compensation expense was $3.0 $2.3 three March 31, 2019 2018, Stock Options The following table summarizes stock option activity during the three March 31, 2019: Weighted- Average Stock Options Exercise Price Options outstanding at December 31, 2018 252,616 $ 64.71 Granted 30,046 104.99 Exercised (3,010 ) 57.85 Forfeited (680 ) 96.20 Options outstanding at March 31, 2019 278,972 $ 69.04 Exercisable at March 31, 2019 157,602 $ 56.70 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 three March 31, 2019 $47.76. The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the three March 31, 2019 2018: Three Months Ended March 31, 2019 2018 Risk-free interest rate 2.58 % 2.52 % Expected life (years) 6.25 6.25 Expected volatility 42.74 % 42.22 % Expected dividend yield 0 % 0 % As of March 31, 2019, $4.3 3.0 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 three March 31, 2019: Weighted- Average Grant Date Restricted Fair Value Stock Per Share Restricted stock at December 31, 2018 323,921 $ 79.85 Granted 27,476 105.03 Restrictions lapsed (22,420 ) 71.40 Forfeited (3,692 ) 108.51 Restricted stock at March 31, 2019 325,285 $ 82.35 As of March 31, 2019, $21.3 3.0 Performance Stock Performance stock units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between 0 150 three The following table summarizes performance stock activity during the three March 31, 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 - - Forfeited - - Performance stock at March 31, 2019 73,574 $ 84.83 As of March 31, 2019, $4.0 2.3 Employee Stock Purchase Plan The following table presents the assumptions used to estimate the fair value of the ESPP during the three March 31, 2019 2018: Three Months Ended March 31, 2019 2018 Risk-free interest rate 2.33 % 1.48 % Expected life (months) 6.00 6.00 Expected volatility 37.36 % 24.49 % Expected dividend yield 0 % 0 % |
Note 10 - Accumulated Other Com
Note 10 - Accumulated Other Comprehensive Loss | 3 Months Ended |
Mar. 31, 2019 | |
Notes to Financial Statements | |
Disclosure of Reclassification Amount [Text Block] | Note 1 0 – Accumulated Other Comprehensive Loss 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 March 31, 2019 2018: Three Months Ended March 31, (in thousands) 2019 2018 Foreign currency translation adjustments Balance at beginning of period $ (8,492 ) $ (5,234 ) Other comprehensive income before reclassifications 476 2,393 Amounts reclassified from accumulated other comprehensive income - - Net current-period other comprehensive income 476 2,393 Balance at end of period $ (8,016 ) $ (2,841 ) |
Note 11 - Income Taxes
Note 11 - Income Taxes | 3 Months Ended |
Mar. 31, 2019 | |
Notes to Financial Statements | |
Income Tax Disclosure [Text Block] | Note 1 1 – Income Taxes 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 March 31, 2019 2018, $4.2 $3.9 three March 31, 2019 21.1 17.6 3.5 three March 31, 2019 2018 The effective income tax rate for the three March 31, 2019 21.0 The Company had reserves against unrecognized tax benefits totaling $4.3 $4.1 March 31, 2019 December 31, 2018, |
Note 12 - Segment Reporting
Note 12 - Segment Reporting | 3 Months Ended |
Mar. 31, 2019 | |
Notes to Financial Statements | |
Segment Reporting Disclosure [Text Block] | Note 1 2 – Segment Reporting 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 March 31, 2019 2018 Three Months Ended March 31, (in thousands) 2019 2018 Revenue: United States $ 87,811 $ 84,167 Europe 21,254 19,945 Japan 4,387 3,633 Total revenue $ 113,452 $ 107,745 Three Months Ended March 31, (in thousands) 2019 2018 Income from Operations: United States $ 26,310 $ 28,843 Europe 4,221 3,361 Corporate Unallocated and Japan (11,083 ) (10,476 ) Total Income from Operations $ 19,448 $ 21,728 Total long-lived assets at March 31, 2019 December 31, 2018 March 31, December 31, (in thousands) 2019 2018 Total long-lived assets: United States $ 191,296 $ 185,979 Europe 35,465 34,577 Japan 7,450 7,445 Total Assets $ 234,211 $ 228,001 |
Significant Accounting Policies
Significant Accounting Policies (Policies) | 3 Months Ended |
Mar. 31, 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 $13.1 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, 2020 not |
Note 3 - Net Income Per Commo_2
Note 3 - Net Income Per Common Share (Tables) | 3 Months Ended |
Mar. 31, 2019 | |
Notes Tables | |
Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] | Three Months Ended March 31, (in thousands, except share and per share amounts) 2019 2018 Net income $ 15,511 $ 18,051 Basic - weighted-average shares outstanding: 26,963,366 26,879,388 Effect of dilutive securities: Employee stock options and other 213,673 317,711 Diluted - weighted-average shares outstanding: 27,177,039 27,197,099 Net income per share: Basic $ 0.58 $ 0.67 Diluted $ 0.57 $ 0.66 |
Note 4 - Goodwill and Other I_2
Note 4 - Goodwill and Other Intangible Assets (Tables) | 3 Months Ended |
Mar. 31, 2019 | |
Notes Tables | |
Schedule of Finite-Lived Intangible Assets [Table Text Block] | March 31, 2019 December 31, 2018 Useful Weighted Average (in thousands) Gross Accumulated Amortization Net Gross Accumulated Amortization Net Life Useful Life Remaining (in years) Intangible Assets with finite lives: Marketing assets $ 930 $ (457 ) $ 473 $ 930 $ (434 ) $ 496 10.0 5.1 Non-compete agreement 270 (210 ) 60 270 (206 ) 64 2.0 - 5.0 3.8 Trade secrets 250 (246 ) 4 250 (233 ) 17 5.0 0.1 Trade names 1,080 (675 ) 405 1,080 (540 ) 540 2.0 0.8 Software technology 12,229 (1,309 ) 10,920 12,229 (997 ) 11,232 10.0 8.8 Customer relationships 10,070 (2,953 ) 7,117 10,070 (2,569 ) 7,501 6.0 - 9.0 4.6 Total intangible assets $ 24,829 $ (5,850 ) $ 18,979 $ 24,829 $ (4,979 ) $ 19,850 |
Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block] | (in thousands) Estimated Remaining 2019 $ 2,580 2020 2,895 2021 2,895 2022 2,895 2023 2,691 Thereafter 5,023 Total estimated amortization expense $ 18,979 |
Note 5 - Fair Value Measureme_2
Note 5 - Fair Value Measurements (Tables) | 3 Months Ended |
Mar. 31, 2019 | |
Notes Tables | |
Fair Value, Assets Measured on Recurring Basis [Table Text Block] | March 31, 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 $ 9,155 $ - $ - $ 8,943 $ - $ - Total $ 9,155 $ - $ - $ 8,943 $ - $ - |
Note 6 - Marketable Securities
Note 6 - Marketable Securities (Tables) | 3 Months Ended |
Mar. 31, 2019 | |
Notes Tables | |
Debt Securities, Held-to-maturity [Table Text Block] | March 31, 2019 (in thousands) Cost Unrealized Gains Unrealized Losses Fair Value U.S. municipal securities $ 10,825 $ 7 $ (6 ) $ 10,826 Corporate debt securities 24,513 52 (27 ) 24,538 U.S. government agency securities 14,505 - (40 ) 14,465 Certificates of deposit/time deposits 3,464 10 (10 ) 3,464 Total marketable securities $ 53,307 $ 69 $ (83 ) $ 53,293 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] | March 31, (in thousands) 2019 Due in one year or less $ 35,045 Due after one year through five years 18,262 Total marketable securities $ 53,307 |
Note 7 - Inventory (Tables)
Note 7 - Inventory (Tables) | 3 Months Ended |
Mar. 31, 2019 | |
Notes Tables | |
Schedule of Inventory, Current [Table Text Block] | March 31, December 31, (in thousands) 2019 2018 Raw materials $ 9,132 $ 9,560 Work in process 412 792 Total inventory 9,544 10,352 Allowance for obsolescence (188 ) (265 ) Inventory, net of allowance $ 9,356 $ 10,087 |
Note 8 - Leases (Tables)
Note 8 - Leases (Tables) | 3 Months Ended |
Mar. 31, 2019 | |
Notes Tables | |
Schedule of Operating Lease Assets and Liabilities [Table Text Block] | (in thousands) March 31, 2019 Operating lease assets $ 11,965 Current operating lease liabilities $ 3,021 Long-term operating lease liabilities 9,107 Total operating lease liabilities $ 12,128 |
Schedule of Lease Expense [Table Text Block] | (in thousands) Three Months Ended March 31, 2019 Operating lease cost $ 1,070 Variable lease cost 239 Total lease cost $ 1,309 |
Lessee, Operating Lease, Liability, Maturity [Table Text Block] | (in thousands) Operating Leases Year Ending December 31, 2019 (excluding three months ended March 31, 2019) $ 2,706 2020 2,627 2021 2,307 2022 2,256 2023 1,028 After 2023 2,098 Total future minimum lease payments 13,022 Less interest (894 ) Present value of lease liabilities $ 12,128 |
Schedule of Lease Terms and Discount Rates [Table Text Block] | <table border="0" cellpadding="0" cellspacing="0" style="; text-indent: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-right: 20%; min-; min-width: 700px;"> <tr style="vertical-align: bottom;"> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td> </td> </tr> <tr style="vertical-align: bottom;"> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> </td> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> </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; background-color: rgb(255, 255, 255);"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;"> </div><div style=" margin: 0pt; text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"><div style="display: inline; font-weight: bold;"><div style="display: inline; font-weight: bold;">March 31, 2019</div></div></div> </td> <td style="padding-bottom: 1px; font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> </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;"> <div style=" font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Remaining Lease Term (Years)</div> </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;"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">5.38</div></td> <td nowrap="nowrap" 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;"> <div style=" font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Discount Rate</div> </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;"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">2.6</div></td> <td nowrap="nowrap" style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;">%</td> </tr> <tr style="vertical-align: bottom;"> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td> </td> </tr> </table></div>" id="sjs-B7"><div style="display: inline; font-family: times new roman; font-size: 10pt"><table border="0" cellpadding="0" cellspacing="0" style="; text-indent: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-right: 20%; min-; min-width: 700px;"> <tr style="vertical-align: bottom;"> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td> </td> </tr> <tr style="vertical-align: bottom;"> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> </td> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> </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; background-color: rgb(255, 255, 255);"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;"> </div><div style=" margin: 0pt; text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"><div style="display: inline; font-weight: bold;"><div style="display: inline; font-weight: bold;">March 31, 2019</div></div></div> </td> <td style="padding-bottom: 1px; font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> </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;"> <div style=" font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Remaining Lease Term (Years)</div> </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;"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">5.38</div></td> <td nowrap="nowrap" 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;"> <div style=" font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Discount Rate</div> </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;"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">2.6</div></td> <td nowrap="nowrap" style="width: 1%; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;">%</td> </tr> <tr style="vertical-align: bottom;"> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td> </td> </tr> </table></div> |
Schedule of Lease Cash Flow Information [Table Text Block] | <table border="0" cellpadding="0" cellspacing="0" style="; text-indent: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-right: 20%; min-; min-width: 700px;"> <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td> </td> </tr> <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"> <td style="width: 82%; font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> <div style=" font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; background-color: rgb(255, 255, 255);">(in thousands)</div> </td> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> </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; background-color: rgb(255, 255, 255);"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;"> </div><div style=" margin: 0pt; text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"><div style="display: inline; font-weight: bold;"><div style="display: inline; font-weight: bold;"><div style="display: inline; font-weight: bold;"><div style="display: inline; font-weight: bold;">Three Months Ended March 31, 2019</div></div></div></div></div> </td> <td style="padding-bottom: 1px; font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> </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;"> <div 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:</div> </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="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <div style=" font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Operating cash flows for operating leases</div> </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; margin-left: 0pt;">$</td> <td style="width: 15%; text-align: right; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">1,197</div></td> <td nowrap="nowrap" 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="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <div style=" font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Lease assets obtained in exchange for new operating lease liabilities</div> </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;"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">13,049</div></td> <td nowrap="nowrap" 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="border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td style="padding-bottom: 1px; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> </td> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> </td> <td style="padding-bottom: 1px;"> </td> </tr> </table></div>" id="sjs-B8"><div style="display: inline; font-family: times new roman; font-size: 10pt"><table border="0" cellpadding="0" cellspacing="0" style="; text-indent: 0px; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-right: 20%; min-; min-width: 700px;"> <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td style="border-top-color: rgb(0, 0, 0); border-top-width: thin; border-top-style: solid;"> </td> <td> </td> </tr> <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"> <td style="width: 82%; font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> <div style=" font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; background-color: rgb(255, 255, 255);">(in thousands)</div> </td> <td style="font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> </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; background-color: rgb(255, 255, 255);"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;"> </div><div style=" margin: 0pt; text-align: center; font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"><div style="display: inline; font-weight: bold;"><div style="display: inline; font-weight: bold;"><div style="display: inline; font-weight: bold;"><div style="display: inline; font-weight: bold;">Three Months Ended March 31, 2019</div></div></div></div></div> </td> <td style="padding-bottom: 1px; font-family: "Times New Roman", Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);"> </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;"> <div 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:</div> </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="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <div style=" font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Operating cash flows for operating leases</div> </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; margin-left: 0pt;">$</td> <td style="width: 15%; text-align: right; font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-left: 0pt;"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">1,197</div></td> <td nowrap="nowrap" 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="font-family: "Times New Roman", Times, serif; font-size: 10pt;"> <div style=" font-family: "Times New Roman", Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Lease assets obtained in exchange for new operating lease liabilities</div> </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;"><div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">13,049</div></td> <td nowrap="nowrap" 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="border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td style="padding-bottom: 1px; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> </td> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> </td> <td style="border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> </td> <td style="padding-bottom: 1px;"> </td> </tr> </table></div> |
Note 9 - Stock-based Compensa_2
Note 9 - Stock-based Compensation (Tables) | 3 Months Ended |
Mar. 31, 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 30,046 104.99 Exercised (3,010 ) 57.85 Forfeited (680 ) 96.20 Options outstanding at March 31, 2019 278,972 $ 69.04 Exercisable at March 31, 2019 157,602 $ 56.70 |
Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block] | Three Months Ended March 31, 2019 2018 Risk-free interest rate 2.58 % 2.52 % Expected life (years) 6.25 6.25 Expected volatility 42.74 % 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 27,476 105.03 Restrictions lapsed (22,420 ) 71.40 Forfeited (3,692 ) 108.51 Restricted stock at March 31, 2019 325,285 $ 82.35 |
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 - - Forfeited - - Performance stock at March 31, 2019 73,574 $ 84.83 |
Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block] | Three Months Ended March 31, 2019 2018 Risk-free interest rate 2.33 % 1.48 % Expected life (months) 6.00 6.00 Expected volatility 37.36 % 24.49 % Expected dividend yield 0 % 0 % |
Note 10 - Accumulated Other C_2
Note 10 - Accumulated Other Comprehensive Loss (Tables) | 3 Months Ended |
Mar. 31, 2019 | |
Notes Tables | |
Comprehensive Income (Loss) [Table Text Block] | Three Months Ended March 31, (in thousands) 2019 2018 Foreign currency translation adjustments Balance at beginning of period $ (8,492 ) $ (5,234 ) Other comprehensive income before reclassifications 476 2,393 Amounts reclassified from accumulated other comprehensive income - - Net current-period other comprehensive income 476 2,393 Balance at end of period $ (8,016 ) $ (2,841 ) |
Note 12 - Segment Reporting (Ta
Note 12 - Segment Reporting (Tables) | 3 Months Ended |
Mar. 31, 2019 | |
Notes Tables | |
Income from Operations by Geographic Area [Table Text Block] | Three Months Ended March 31, (in thousands) 2019 2018 Income from Operations: United States $ 26,310 $ 28,843 Europe 4,221 3,361 Corporate Unallocated and Japan (11,083 ) (10,476 ) Total Income from Operations $ 19,448 $ 21,728 |
Long-lived Assets by Geographic Areas [Table Text Block] | March 31, December 31, (in thousands) 2019 2018 Total long-lived assets: United States $ 191,296 $ 185,979 Europe 35,465 34,577 Japan 7,450 7,445 Total Assets $ 234,211 $ 228,001 |
Operating Segments [Member] | |
Notes Tables | |
Revenue from External Customers by Geographic Areas [Table Text Block] | Three Months Ended March 31, (in thousands) 2019 2018 Revenue: United States $ 87,811 $ 84,167 Europe 21,254 19,945 Japan 4,387 3,633 Total revenue $ 113,452 $ 107,745 |
Note 2 - Recent Accounting Pr_2
Note 2 - Recent Accounting Pronouncements (Details Textual) - USD ($) $ in Thousands | Mar. 31, 2019 | Jan. 01, 2019 | Dec. 31, 2018 |
Operating Lease, Right-of-Use Asset | $ 11,965 | ||
Operating Lease, Liability, Total | $ 12,128 | ||
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 | |
Mar. 31, 2019 | Mar. 31, 2018 | |
Net income | $ 15,511 | $ 18,051 |
Basic - weighted-average shares outstanding: (in shares) | 26,963,366 | 26,879,388 |
Effect of dilutive securities: | ||
Employee stock options and other (in shares) | 213,673 | 317,711 |
Diluted - weighted-average shares outstanding: (in shares) | 27,177,039 | 27,197,099 |
Basic (in dollars per share) | $ 0.58 | $ 0.67 |
Diluted (in dollars per share) | $ 0.57 | $ 0.66 |
Note 4 - Goodwill and Other I_3
Note 4 - Goodwill and Other Intangible Assets (Details Textual) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2019 | Mar. 31, 2018 | |
Goodwill, Period Increase (Decrease), Total | $ 0 | |
Amortization of Intangible Assets, Total | $ 900 | $ 800 |
Note 4 - Goodwill and Other I_4
Note 4 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2019 | Dec. 31, 2018 | |
Gross | $ 24,829 | $ 24,829 |
Accumulated amortization | (5,850) | (4,979) |
Net | 18,979 | 19,850 |
Marketing-Related Intangible Assets [Member] | ||
Gross | 930 | 930 |
Accumulated amortization | (457) | (434) |
Net | $ 473 | 496 |
Useful Life (Year) | 10 years | |
Weighted average useful life remaining (Year) | 5 years 36 days | |
Noncompete Agreements [Member] | ||
Gross | $ 270 | 270 |
Accumulated amortization | (210) | (206) |
Net | $ 60 | 64 |
Weighted average useful life remaining (Year) | 3 years 292 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 | (246) | (233) |
Net | $ 4 | 17 |
Useful Life (Year) | 5 years | |
Weighted average useful life remaining (Year) | 36 days | |
Trade Names [Member] | ||
Gross | $ 1,080 | 1,080 |
Accumulated amortization | (675) | (540) |
Net | $ 405 | 540 |
Useful Life (Year) | 2 years | |
Weighted average useful life remaining (Year) | 292 days | |
Computer Software, Intangible Asset [Member] | ||
Gross | $ 12,229 | 12,229 |
Accumulated amortization | (1,309) | (997) |
Net | $ 10,920 | 11,232 |
Useful Life (Year) | 10 years | |
Weighted average useful life remaining (Year) | 8 years 292 days | |
Customer Relationships [Member] | ||
Gross | $ 10,070 | 10,070 |
Accumulated amortization | (2,953) | (2,569) |
Net | $ 7,117 | $ 7,501 |
Weighted average useful life remaining (Year) | 4 years 219 days | |
Customer Relationships [Member] | Minimum [Member] | ||
Useful Life (Year) | 6 years 328 days | |
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 | Mar. 31, 2019 | Dec. 31, 2018 |
Remaining 2019 | $ 2,580 | |
2020 | 2,895 | |
2021 | 2,895 | |
2022 | 2,895 | |
2023 | 2,691 | |
Thereafter | 5,023 | |
Total estimated amortization expense | $ 18,979 | $ 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 | Mar. 31, 2019 | Dec. 31, 2018 |
Fair Value, Inputs, Level 1 [Member] | ||
Cash and cash equivalents: | ||
Money market mutual fund | $ 9,155 | $ 8,943 |
Total | 9,155 | 8,943 |
Fair Value, Inputs, Level 2 [Member] | ||
Cash and cash equivalents: | ||
Money market mutual fund | ||
Total | ||
Fair Value, Inputs, Level 3 [Member] | ||
Cash and cash equivalents: | ||
Money market mutual fund | ||
Total |
Note 6 - Marketable Securitie_2
Note 6 - Marketable Securities - Short-term and Long-term Marketable Securities (Details) - USD ($) $ in Thousands | Mar. 31, 2019 | Dec. 31, 2018 |
Amortized Cost | $ 53,307 | $ 70,329 |
Unrealized Gains | 69 | 1 |
Unrealized Losses | (83) | (242) |
Fair Value | 53,293 | 70,088 |
Bank Time Deposits [Member] | ||
Amortized Cost | 3,464 | 4,208 |
Unrealized Gains | 10 | |
Unrealized Losses | (10) | (25) |
Fair Value | 3,464 | 4,183 |
US States and Political Subdivisions Debt Securities [Member] | ||
Amortized Cost | 10,825 | 17,509 |
Unrealized Gains | 7 | 1 |
Unrealized Losses | (6) | (33) |
Fair Value | 10,826 | 17,477 |
Corporate Debt Securities [Member] | ||
Amortized Cost | 24,513 | 31,769 |
Unrealized Gains | 52 | |
Unrealized Losses | (27) | (96) |
Fair Value | 24,538 | 31,673 |
US Government Agencies Debt Securities [Member] | ||
Amortized Cost | 14,505 | 16,843 |
Unrealized Gains | ||
Unrealized Losses | (40) | (88) |
Fair Value | $ 14,465 | $ 16,755 |
Note 6 - Marketable Securitie_3
Note 6 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details) - USD ($) $ in Thousands | Mar. 31, 2019 | Dec. 31, 2018 |
Due in one year or less | $ 35,045 | |
Due after one year through five years | 18,262 | |
Total marketable securities | $ 53,307 | $ 70,329 |
Note 7 - Inventory - Inventory
Note 7 - Inventory - Inventory (Details) - USD ($) $ in Thousands | Mar. 31, 2019 | Dec. 31, 2018 |
Raw materials | $ 9,132 | $ 9,560 |
Work in process | 412 | 792 |
Total inventory | 9,544 | 10,352 |
Allowance for obsolescence | (188) | (265) |
Inventory, net of allowance | $ 9,356 | $ 10,087 |
Note 8 - Leases (Details Textua
Note 8 - Leases (Details Textual) xbrli-pure in Thousands, $ in Thousands | Mar. 31, 2019USD ($) | Jan. 01, 2019USD ($) | Dec. 31, 2018USD ($) |
Operating Lease, Right-of-Use Asset | $ 11,965 | ||
Lessee, Financial Lease, Liability, Number of Leases | 0 | ||
Lessee, Operating Lease, Lease Not yet Commenced, Number of Leases | 0 | ||
Operating Lease, Liability, Total | $ 12,128 | ||
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 | Mar. 31, 2019 | Dec. 31, 2018 |
Operating lease assets | $ 11,965 | |
Current operating lease liabilities | 3,021 | |
Long-term operating lease liabilities | 9,107 | |
Total operating lease liabilities | $ 12,128 |
Note 8 - Leases - Lease Expense
Note 8 - Leases - Lease Expense (Details) $ in Thousands | 3 Months Ended |
Mar. 31, 2019USD ($) | |
Operating lease cost | $ 1,070 |
Variable lease cost | 239 |
Total lease cost | $ 1,309 |
Note 8 - Leases - Maturities of
Note 8 - Leases - Maturities of Operating Lease Liabilities (Details) $ in Thousands | Mar. 31, 2019USD ($) |
2019 (excluding three months ended March 31, 2019) | $ 2,706 |
2020 | 2,627 |
2021 | 2,307 |
2022 | 2,256 |
2023 | 1,028 |
After 2023 | 2,098 |
Total future minimum lease payments | 13,022 |
Less interest | (894) |
Present value of lease liabilities | $ 12,128 |
Note 8 - Leases - Weighted Aver
Note 8 - Leases - Weighted Average Remaining Terms and Discount Rates (Details) | Mar. 31, 2019 |
Weighted Average Remaining Lease Term (Years) (Year) | 5 years 138 days |
Weighted Average Discount Rate | 2.60% |
Note 8 - Leases - Cash Flow Inf
Note 8 - Leases - Cash Flow Information (Details) $ in Thousands | 3 Months Ended |
Mar. 31, 2019USD ($) | |
Operating cash flows for operating leases | $ 1,197 |
Lease assets obtained in exchange for new operating lease liabilities | $ 13,049 |
Note 9 - Stock-based Compensa_3
Note 9 - Stock-based Compensation (Details Textual) - USD ($) $ / shares in Units, $ in Thousands | 3 Months Ended | |
Mar. 31, 2019 | Mar. 31, 2018 | |
Share-based Compensation Arrangement by Share-based Payment Award, Expiration Period | 10 years | |
Share-based Payment Arrangement, Noncash Expense, Total | $ 3,040 | $ 2,307 |
Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value | $ 47.76 | |
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 | 180 days | |
Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Percent | 85.00% | |
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,300 | |
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition | 3 years | |
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 | |
Restricted Stock [Member] | ||
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total | $ 21,300 | |
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition | 3 years | |
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 | $ 4,000 | |
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition | 2 years 109 days | |
Percentage of Target Number Capable of Being Earned and Vesting, Lower Limit | 0.00% | |
Percentage of Target Number Capable of Being Earned and Vesting, Upper Limit | 150.00% |
Note 9 - Stock-based Compensa_4
Note 9 - Stock-based Compensation - Stock Option Activity (Details) | 3 Months Ended |
Mar. 31, 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 | 30,046 |
Granted, weighted-average exercise price (in dollars per share) | $ / shares | $ 104.99 |
Exercised (in shares) | shares | (3,010) |
Exercised, weighted-average exercise price (in dollars per share) | $ / shares | $ 57.85 |
Forfeited (in shares) | shares | (680) |
Forfeited, weighted-average exercise price (in dollars per share) | $ / shares | $ 96.20 |
Options outstanding (in shares) | shares | 278,972 |
Options outstanding, weighted-average exercise price (in dollars per share) | $ / shares | $ 69.04 |
Options exercisable (in shares) | shares | 157,602 |
Options exercisable, weighted-average exercise price (in dollars per share) | $ / shares | $ 56.70 |
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] | 3 Months Ended | |
Mar. 31, 2019 | Mar. 31, 2018 | |
Risk-free interest rate | 2.58% | 2.52% |
Expected life (Year) | 6 years 91 days | 6 years 91 days |
Expected volatility | 42.74% | 42.22% |
Expected dividend yield | 0.00% | 0.00% |
Note 9 - Stock-based Compensa_6
Note 9 - Stock-based Compensation - Restricted Stock Options (Details) - Restricted Stock [Member] | 3 Months Ended |
Mar. 31, 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 | 27,476 |
Granted, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 105.03 |
Restrictions lapsed (in shares) | shares | (22,420) |
Restrictions lapsed, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 71.40 |
Forfeited (in shares) | shares | (3,692) |
Forfeited, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 108.51 |
Restricted stock (in shares) | shares | 325,285 |
Restricted stock, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 82.35 |
Note 9 - Stock-based Compensa_7
Note 9 - Stock-based Compensation - Performance Stock (Details) - Performance Shares [Member] | 3 Months Ended |
Mar. 31, 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 | |
Restrictions lapsed, weighted-average grant date fair value (in dollars per share) | $ / shares | |
Performance change (in shares) | shares | |
Performance change, weighted-average grant date fair value (in dollars per share) | $ / shares | |
Forfeited (in shares) | shares | |
Forfeited, weighted-average grant date fair value (in dollars per share) | $ / shares | |
Restricted stock (in shares) | shares | 73,574 |
Restricted stock, weighted-average grant date fair value (in dollars per share) | $ / shares | $ 84.83 |
Note 9 - Stock-based Compensa_8
Note 9 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details) - ESPP [Member] | 3 Months Ended | |
Mar. 31, 2019 | Mar. 31, 2018 | |
Risk-free interest rate | 2.33% | 1.48% |
Expected life (Month) | 180 days | 180 days |
Expected volatility | 37.36% | 24.49% |
Expected dividend yield | 0.00% | 0.00% |
Note 10 - Accumulated Other C_3
Note 10 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2019 | Mar. 31, 2018 | |
Balance | $ 541,497 | $ 461,215 |
Balance | 542,795 | 487,676 |
Accumulated Foreign Currency Adjustment Attributable to Parent [Member] | ||
Balance | (8,492) | (5,234) |
Other comprehensive income before reclassifications | 476 | 2,393 |
Amounts reclassified from accumulated other comprehensive income | ||
Net current-period other comprehensive income | 476 | 2,393 |
Balance | $ (8,016) | $ (2,841) |
Note 11 - Income Taxes (Details
Note 11 - Income Taxes (Details Textual) - USD ($) $ in Thousands | 3 Months Ended | ||
Mar. 31, 2019 | Mar. 31, 2018 | Dec. 31, 2018 | |
Income Tax Expense (Benefit), Total | $ 4,150 | $ 3,855 | |
Effective Income Tax Rate Reconciliation, Percent, Total | 21.10% | 17.60% | |
Effective Income Tax Rate, Increase (Decrease), Percentage | 3.50% | ||
Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent | 21.00% | ||
Unrecognized Tax Benefits, Ending Balance | $ 4,300 | $ 4,100 |
Note 12 - Segment Reporting - R
Note 12 - Segment Reporting - Revenue From Operations by Reportable Segment (Details) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2019 | Mar. 31, 2018 | |
Revenue: | ||
Revenue | $ 113,452 | $ 107,745 |
Operating Segments [Member] | United States Segment [Member] | ||
Revenue: | ||
Revenue | 87,811 | 84,167 |
Operating Segments [Member] | Europe Segment [Member] | ||
Revenue: | ||
Revenue | 21,254 | 19,945 |
Operating Segments [Member] | Japan Segment [Member] | ||
Revenue: | ||
Revenue | $ 4,387 | $ 3,633 |
Note 12 - Segment Reporting - I
Note 12 - Segment Reporting - Income From Operations (Details) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2019 | Mar. 31, 2018 | |
Income from operations | $ 19,448 | $ 21,728 |
Operating Segments [Member] | United States Segment [Member] | ||
Income from operations | 26,310 | 28,843 |
Operating Segments [Member] | Europe Segment [Member] | ||
Income from operations | 4,221 | 3,361 |
Corporate and Reconciling Items [Member] | Corporate Unallocated and Japan Segment[Member] | ||
Income from operations | $ (11,083) | $ (10,476) |
Note 12 - Segment Reporting - L
Note 12 - Segment Reporting - Long-lived Assets by Geographic Region (Details) - USD ($) $ in Thousands | Mar. 31, 2019 | Dec. 31, 2018 |
Long-lived assets | $ 234,211 | $ 228,001 |
Operating Segments [Member] | United States Segment [Member] | ||
Long-lived assets | 191,296 | 185,979 |
Operating Segments [Member] | Europe Segment [Member] | ||
Long-lived assets | 35,465 | 34,577 |
Operating Segments [Member] | Japan Segment [Member] | ||
Long-lived assets | $ 7,450 | $ 7,445 |