2019 Q4 Form 10-K Financial Statement

#000143774920004330 Filed on March 04, 2020

View on sec.gov

Income Statement

Concept 2019 Q4 2018 Q4 2018 Q3
Revenue $85.95M $85.61M $83.52M
YoY Change 0.39% 94372.58% -1.75%
Cost Of Revenue $59.90M $57.88M $59.26M
YoY Change 3.49% -10.33% -8.15%
Gross Profit $26.05M $27.73M $24.26M
YoY Change -6.08% 7.75% 18.38%
Gross Profit Margin 30.3% 32.39% 29.05%
Selling, General & Admin $11.97M $13.24M $12.53M
YoY Change -9.59% 18.43% 16.41%
% of Gross Profit 45.96% 47.74% 51.65%
Research & Development $1.570M $2.090M $2.207M
YoY Change -24.88% 12.37% 15.55%
% of Gross Profit 6.03% 7.54% 9.1%
Depreciation & Amortization $5.380M $4.000M $1.445M
YoY Change 34.5% 15.94% 47.75%
% of Gross Profit 20.66% 14.42% 5.96%
Operating Expenses $16.19M $17.24M $16.62M
YoY Change -6.09% 15.24% 14.4%
Operating Profit $9.855M $10.49M $7.646M
YoY Change -6.06% -2.64% 28.07%
Interest Expense -$1.110M -$1.160M -$880.0K
YoY Change -4.31% 31.82% 8.64%
% of Operating Profit -11.26% -11.06% -11.51%
Other Income/Expense, Net $0.00 $340.0K -$930.0K
YoY Change -100.0% 580.0% 31.54%
Pretax Income $8.740M $9.680M $6.716M
YoY Change -9.71% -4.82% 27.61%
Income Tax -$2.830M $2.430M $1.370M
% Of Pretax Income -32.38% 25.1% 20.4%
Net Earnings $5.778M $4.436M $5.346M
YoY Change 30.25% -60.39% 55.45%
Net Earnings / Revenue 6.72% 5.18% 6.4%
Basic Earnings Per Share $0.55 $0.42 $0.50
Diluted Earnings Per Share $0.54 $0.41 $0.50
COMMON SHARES
Basic Shares Outstanding 10.57M 10.61M
Diluted Shares Outstanding 10.79M

Balance Sheet

Concept 2019 Q4 2018 Q4 2018 Q3
SHORT-TERM ASSETS
Cash & Short-Term Investments $20.40M $12.60M $10.80M
YoY Change 61.9% -30.0% -13.6%
Cash & Equivalents $20.39M $12.64M $10.78M
Short-Term Investments
Other Short-Term Assets $105.4M $106.1M
YoY Change -13.03%
Inventory $3.457M $3.775M $3.140M
Prepaid Expenses $91.25M $87.78M $91.59M
Receivables $14.56M $10.84M $11.53M
Other Receivables $1.800M $1.500M $3.100M
Total Short-Term Assets $145.7M $131.9M $134.7M
YoY Change 10.42% -14.26% -11.35%
LONG-TERM ASSETS
Property, Plant & Equipment $82.12M $48.07M $40.22M
YoY Change 70.85% 95.23% 80.9%
Goodwill $109.8M $90.05M $90.05M
YoY Change 21.95% 0.0% 2.94%
Intangibles $57.65M $49.40M $51.51M
YoY Change 16.72% -15.44% -14.96%
Long-Term Investments
YoY Change
Other Assets $17.90M $18.70M $21.00M
YoY Change -4.28% -21.1% -11.76%
Total Long-Term Assets $280.2M $207.6M $202.8M
YoY Change 34.96% 5.52% 4.5%
TOTAL ASSETS
Total Short-Term Assets $145.7M $131.9M $134.7M
Total Long-Term Assets $280.2M $207.6M $202.8M
Total Assets $425.9M $339.6M $337.5M
YoY Change 25.43% -3.16% -2.46%
SHORT-TERM LIABILITIES
YoY Change
Accounts Payable $6.671M $8.445M $8.242M
YoY Change -21.01% 20.2% 38.6%
Accrued Expenses $9.373M $5.899M $6.877M
YoY Change 58.89% -8.0% -20.79%
Deferred Revenue $123.1M $116.7M $120.5M
YoY Change 5.45% -9.62%
Short-Term Debt $0.00 $0.00 $0.00
YoY Change
Long-Term Debt Due $0.00 $18.40M $17.80M
YoY Change -100.0% 0.55% -2.73%
Total Short-Term Liabilities $156.9M $165.3M $167.5M
YoY Change -5.1% -7.4% -8.29%
LONG-TERM LIABILITIES
Long-Term Debt $113.5M $46.20M $46.60M
YoY Change 145.67% -21.16% -26.15%
Other Long-Term Liabilities $0.00 $258.0K
YoY Change -53.78%
Total Long-Term Liabilities $0.00 $0.00 $258.0K
YoY Change -100.0% -53.78%
TOTAL LIABILITIES
Total Short-Term Liabilities $156.9M $165.3M $167.5M
Total Long-Term Liabilities $0.00 $0.00 $258.0K
Total Liabilities $156.9M $165.3M $167.8M
YoY Change -5.1% -7.62% -8.43%
SHAREHOLDERS EQUITY
Retained Earnings $76.21M $60.81M $56.37M
YoY Change 25.32% 42.49% 79.02%
Common Stock $17.51M $19.78M $19.10M
YoY Change -11.44% 12.78% 13.09%
Preferred Stock
YoY Change
Treasury Stock (at cost)
YoY Change
Treasury Stock Shares
Shareholders Equity $94.19M $79.78M $75.43M
YoY Change
Total Liabilities & Shareholders Equity $425.9M $339.6M $337.5M
YoY Change 25.43% -3.16% -2.46%

Cashflow Statement

Concept 2019 Q4 2018 Q4 2018 Q3
OPERATING ACTIVITIES
Net Income $5.778M $4.436M $5.346M
YoY Change 30.25% -60.39% 55.45%
Depreciation, Depletion And Amortization $5.380M $4.000M $1.445M
YoY Change 34.5% 15.94% 47.75%
Cash From Operating Activities $13.19M $10.67M $11.21M
YoY Change 23.62% -24.22% 54.0%
INVESTING ACTIVITIES
Capital Expenditures -$12.91M -$8.480M $7.003M
YoY Change 52.24% 144.38% 144.95%
Acquisitions
YoY Change
Other Investing Activities -$430.0K -$460.0K -$110.0K
YoY Change -6.52% -17.86% -95.38%
Cash From Investing Activities -$13.34M -$8.930M -$7.116M
YoY Change 49.38% 121.59% 35.72%
FINANCING ACTIVITIES
Cash Dividend Paid
YoY Change
Common Stock Issuance & Retirement, Net $0.00
YoY Change
Debt Paid & Issued, Net
YoY Change
Cash From Financing Activities 8.550M 120.0K -4.484M
YoY Change 7025.0% -102.64% -3.32%
NET CHANGE
Cash From Operating Activities 13.19M 10.67M 11.21M
Cash From Investing Activities -13.34M -8.930M -7.116M
Cash From Financing Activities 8.550M 120.0K -4.484M
Net Change In Cash 8.400M 1.860M -386.0K
YoY Change 351.61% -66.18% -85.15%
FREE CASH FLOW
Cash From Operating Activities $13.19M $10.67M $11.21M
Capital Expenditures -$12.91M -$8.480M $7.003M
Free Cash Flow $26.10M $19.15M $4.211M
YoY Change 36.29% 9.12% -4.79%

Facts In Submission

Frame Concept Type Concept / XBRL Key Value Unit
CY2019 dei Entity Registrant Name
EntityRegistrantName
TUCOWS INC /PA/
CY2019 dei Amendment Flag
AmendmentFlag
false
CY2019 dei Current Fiscal Year End Date
CurrentFiscalYearEndDate
--12-31
CY2019 dei Document Fiscal Period Focus
DocumentFiscalPeriodFocus
FY
CY2019 dei Document Fiscal Year Focus
DocumentFiscalYearFocus
2019
CY2019 dei Document Period End Date
DocumentPeriodEndDate
2019-12-31
CY2019 dei Document Type
DocumentType
10-K
CY2019 dei Entity Central Index Key
EntityCentralIndexKey
0000909494
CY2020Q1 dei Entity Common Stock Shares Outstanding
EntityCommonStockSharesOutstanding
10621338
CY2019 dei Entity Current Reporting Status
EntityCurrentReportingStatus
Yes
CY2019 dei Entity Emerging Growth Company
EntityEmergingGrowthCompany
false
CY2019 dei Entity Filer Category
EntityFilerCategory
Accelerated Filer
CY2019 dei Entity Interactive Data Current
EntityInteractiveDataCurrent
Yes
CY2019Q2 dei Entity Public Float
EntityPublicFloat
577200000
CY2019 dei Entity Shell Company
EntityShellCompany
false
CY2019 dei Entity Small Business
EntitySmallBusiness
false
CY2019 dei Entity Voluntary Filers
EntityVoluntaryFilers
No
CY2019 dei Entity Well Known Seasoned Issuer
EntityWellKnownSeasonedIssuer
No
CY2019 dei Security12b Title
Security12bTitle
Common stock, no par value
CY2019 dei Trading Symbol
TradingSymbol
tcx
CY2019Q4 tcx Accreditation Fees Payable Current
AccreditationFeesPayableCurrent
952000
CY2018Q4 tcx Accreditation Fees Payable Current
AccreditationFeesPayableCurrent
985000
CY2018Q4 tcx Accumulated Other Comprehensive Income Tax
AccumulatedOtherComprehensiveIncomeTax
259000
CY2019Q4 tcx Accumulated Other Comprehensive Income Tax
AccumulatedOtherComprehensiveIncomeTax
-152000
CY2017Q4 tcx Accumulated Other Comprehensive Income Tax
AccumulatedOtherComprehensiveIncomeTax
CY2016Q4 tcx Accumulated Other Comprehensive Income Tax
AccumulatedOtherComprehensiveIncomeTax
-56000
CY2018 tcx Acquisition Of Intangible Assets Transferred From Other Assets
AcquisitionOfIntangibleAssetsTransferredFromOtherAssets
CY2017 tcx Acquisition Of Intangible Assets Transferred From Other Assets
AcquisitionOfIntangibleAssetsTransferredFromOtherAssets
111000
CY2019 tcx Acquisition Of Intangible Assets Transferred From Other Assets
AcquisitionOfIntangibleAssetsTransferredFromOtherAssets
CY2019 tcx Income Tax Expense Benefit Continuing Operations Valuation Allowance On Foreign Tax Credits And Net Operating Losses
IncomeTaxExpenseBenefitContinuingOperationsValuationAllowanceOnForeignTaxCreditsAndNetOperatingLosses
5300000
CY2018 tcx Income Tax Expense Benefit Continuing Operations Valuation Allowance On Foreign Tax Credits And Net Operating Losses
IncomeTaxExpenseBenefitContinuingOperationsValuationAllowanceOnForeignTaxCreditsAndNetOperatingLosses
2800000
CY2019 tcx Increase Decrease In Accreditation Fees Payable
IncreaseDecreaseInAccreditationFeesPayable
-67000
CY2018 tcx Increase Decrease In Accreditation Fees Payable
IncreaseDecreaseInAccreditationFeesPayable
-229000
CY2017 tcx Increase Decrease In Accreditation Fees Payable
IncreaseDecreaseInAccreditationFeesPayable
-238000
CY2019 tcx Increase Decrease In Customer Deposit Liability
IncreaseDecreaseInCustomerDepositLiability
27000
CY2017 tcx Disposal Of Domain Names
DisposalOfDomainNames
291000
CY2017 tcx Effective Income Tax Rate Reconciliation Change In Valuation Allowance On Pre2017 Foreign Tax Credits Amount
EffectiveIncomeTaxRateReconciliationChangeInValuationAllowanceOnPre2017ForeignTaxCreditsAmount
1276000
CY2019 tcx Effective Income Tax Rate Reconciliation Change In Valuation Allowance On Pre2017 Foreign Tax Credits Amount
EffectiveIncomeTaxRateReconciliationChangeInValuationAllowanceOnPre2017ForeignTaxCreditsAmount
5277000
CY2018 tcx Effective Income Tax Rate Reconciliation Change In Valuation Allowance On Pre2017 Foreign Tax Credits Amount
EffectiveIncomeTaxRateReconciliationChangeInValuationAllowanceOnPre2017ForeignTaxCreditsAmount
2811000
CY2018 tcx Increase Decrease In Customer Deposit Liability
IncreaseDecreaseInCustomerDepositLiability
-3336000
CY2017 tcx Increase Decrease In Customer Deposit Liability
IncreaseDecreaseInCustomerDepositLiability
1085000
CY2019 tcx Increase Decrease In Operating Lease Rightofuse Asset
IncreaseDecreaseInOperatingLeaseRightofuseAsset
5392000
CY2019 tcx Allowance For Doubtful Accounts Charged To Recovered Costs And Expenses
AllowanceForDoubtfulAccountsChargedToRecoveredCostsAndExpenses
-1000
CY2018 tcx Allowance For Doubtful Accounts Charged To Recovered Costs And Expenses
AllowanceForDoubtfulAccountsChargedToRecoveredCostsAndExpenses
-36000
CY2019 tcx Amortization Of Contract Costs
AmortizationOfContractCosts
-10000
CY2018 tcx Amortization Of Contract Costs
AmortizationOfContractCosts
14000
CY2017 tcx Amortization Of Contract Costs
AmortizationOfContractCosts
CY2019 tcx Amortization Of Intangible Assets Net Of Cost Of Services Amortization
AmortizationOfIntangibleAssetsNetOfCostOfServicesAmortization
9209000
CY2018 tcx Amortization Of Intangible Assets Net Of Cost Of Services Amortization
AmortizationOfIntangibleAssetsNetOfCostOfServicesAmortization
7247000
CY2017 tcx Amortization Of Intangible Assets Net Of Cost Of Services Amortization
AmortizationOfIntangibleAssetsNetOfCostOfServicesAmortization
6566000
CY2019 tcx Contract With Customer Liability Additions
ContractWithCustomerLiabilityAdditions
232647000
CY2019 tcx Contractual Obligation Term
ContractualObligationTerm
P10Y
CY2019 tcx Cost Of Goods And Services Sold Network Expenses
CostOfGoodsAndServicesSoldNetworkExpenses
9190000
CY2018 tcx Cost Of Goods And Services Sold Network Expenses
CostOfGoodsAndServicesSoldNetworkExpenses
9846000
CY2017 tcx Cost Of Goods And Services Sold Network Expenses
CostOfGoodsAndServicesSoldNetworkExpenses
9324000
CY2019Q4 tcx Customer Deposit Liability Current
CustomerDepositLiabilityCurrent
14074000
CY2018Q4 tcx Customer Deposit Liability Current
CustomerDepositLiabilityCurrent
11919000
CY2019Q4 tcx Deferred Tax Assets Tax Credit Carryforwards Foreign And General Business
DeferredTaxAssetsTaxCreditCarryforwardsForeignAndGeneralBusiness
9004000
CY2018Q4 tcx Deferred Tax Assets Tax Credit Carryforwards Foreign And General Business
DeferredTaxAssetsTaxCreditCarryforwardsForeignAndGeneralBusiness
3864000
CY2019Q4 tcx Deferred Tax Liabilities Foreign Branch
DeferredTaxLiabilitiesForeignBranch
2012000
CY2018Q4 tcx Deferred Tax Liabilities Foreign Branch
DeferredTaxLiabilitiesForeignBranch
CY2019 tcx Disposal Of Domain Names
DisposalOfDomainNames
115000
CY2018 tcx Disposal Of Domain Names
DisposalOfDomainNames
341000
CY2017 tcx Effective Income Tax Rate Reconciliation Changes In Tax Laws Included In Tax Act Amount
EffectiveIncomeTaxRateReconciliationChangesInTaxLawsIncludedInTaxActAmount
-5800000
CY2019 tcx Effective Income Tax Rate Reconciliation Deferred Tax In Foreign Branch
EffectiveIncomeTaxRateReconciliationDeferredTaxInForeignBranch
-840000
CY2018 tcx Effective Income Tax Rate Reconciliation Deferred Tax In Foreign Branch
EffectiveIncomeTaxRateReconciliationDeferredTaxInForeignBranch
CY2017 tcx Effective Income Tax Rate Reconciliation Deferred Tax In Foreign Branch
EffectiveIncomeTaxRateReconciliationDeferredTaxInForeignBranch
CY2017 tcx Effective Income Tax Rate Reconciliation Effect Of Decrease In Federal Tax Rate On Deferred Taxes Amount
EffectiveIncomeTaxRateReconciliationEffectOfDecreaseInFederalTaxRateOnDeferredTaxesAmount
-10036000
CY2019 tcx Effective Income Tax Rate Reconciliation Effect Of Decrease In Federal Tax Rate On Deferred Taxes Amount
EffectiveIncomeTaxRateReconciliationEffectOfDecreaseInFederalTaxRateOnDeferredTaxesAmount
CY2018 tcx Effective Income Tax Rate Reconciliation Effect Of Decrease In Federal Tax Rate On Deferred Taxes Amount
EffectiveIncomeTaxRateReconciliationEffectOfDecreaseInFederalTaxRateOnDeferredTaxesAmount
CY2017 tcx Effective Income Tax Rate Reconciliation Non Creditable2017 Foreign Tax Amount
EffectiveIncomeTaxRateReconciliationNonCreditable2017ForeignTaxAmount
2903000
CY2019 tcx Effective Income Tax Rate Reconciliation Non Creditable2017 Foreign Tax Amount
EffectiveIncomeTaxRateReconciliationNonCreditable2017ForeignTaxAmount
515000
CY2018 tcx Effective Income Tax Rate Reconciliation Non Creditable2017 Foreign Tax Amount
EffectiveIncomeTaxRateReconciliationNonCreditable2017ForeignTaxAmount
CY2019 tcx Effective Income Tax Rate Reconciliation Sharebased Compensation Excess Tax Benefit Amount
EffectiveIncomeTaxRateReconciliationSharebasedCompensationExcessTaxBenefitAmount
-634000
CY2018 tcx Effective Income Tax Rate Reconciliation Sharebased Compensation Excess Tax Benefit Amount
EffectiveIncomeTaxRateReconciliationSharebasedCompensationExcessTaxBenefitAmount
-697000
CY2017 tcx Effective Income Tax Rate Reconciliation Sharebased Compensation Excess Tax Benefit Amount
EffectiveIncomeTaxRateReconciliationSharebasedCompensationExcessTaxBenefitAmount
-2796000
CY2019Q4 tcx Lessee Operating Lease Lease Not Yet Commenced Future Minimum Payments Due
LesseeOperatingLeaseLeaseNotYetCommencedFutureMinimumPaymentsDue
900000
CY2019 tcx Lessee Operating Lease Option To Extend Amount
LesseeOperatingLeaseOptionToExtendAmount
600000
CY2019 tcx Lessee Operating Lease Option To Terminate Term
LesseeOperatingLeaseOptionToTerminateTerm
P1Y
CY2019Q4 tcx Net Operating Loss
NetOperatingLoss
300000
CY2018Q4 tcx Net Operating Loss
NetOperatingLoss
200000
CY2019 tcx Operating Lease Net
OperatingLeaseNet
32000
CY2018 tcx Operating Lease Net
OperatingLeaseNet
CY2017 tcx Operating Lease Net
OperatingLeaseNet
CY2019 tcx Property Plant And Equipment Fully Depreciated Writedown
PropertyPlantAndEquipmentFullyDepreciatedWritedown
100000
CY2019 tcx Shares Received In Connection With Share Based Compensation Value
SharesReceivedInConnectionWithShareBasedCompensationValue
1510000
CY2018 tcx Shares Received In Connection With Share Based Compensation Value
SharesReceivedInConnectionWithShareBasedCompensationValue
1138000
CY2017 tcx Shares Received In Connection With Share Based Compensation Value
SharesReceivedInConnectionWithShareBasedCompensationValue
2602000
CY2019 tcx Shares Received In Connection With Sharebased Compensation Price Per Share
SharesReceivedInConnectionWithSharebasedCompensationPricePerShare
70.77
CY2018 tcx Shares Received In Connection With Sharebased Compensation Price Per Share
SharesReceivedInConnectionWithSharebasedCompensationPricePerShare
57.56
CY2017 tcx Shares Received In Connection With Sharebased Compensation Price Per Share
SharesReceivedInConnectionWithSharebasedCompensationPricePerShare
51.58
CY2019 tcx Stock Repurchased And Retired During Period Average Price Per Share
StockRepurchasedAndRetiredDuringPeriodAveragePricePerShare
48.97
CY2018 tcx Stock Repurchased And Retired During Period Average Price Per Share
StockRepurchasedAndRetiredDuringPeriodAveragePricePerShare
CY2017 tcx Stock Repurchased And Retired During Period Average Price Per Share
StockRepurchasedAndRetiredDuringPeriodAveragePricePerShare
CY2017Q4 tcx Stockholders Equity Adjusted Balance
StockholdersEquityAdjustedBalance
61274000
CY2019Q4 tcx Subsequent Events
SubsequentEvents
CY2018Q4 tcx Subsequent Events
SubsequentEvents
CY2019Q4 us-gaap Accounts Payable Current
AccountsPayableCurrent
6671000
CY2018Q4 us-gaap Accounts Payable Current
AccountsPayableCurrent
8445000
CY2019Q4 us-gaap Accounts Receivable Net Current
AccountsReceivableNetCurrent
14564000
CY2018Q4 us-gaap Accounts Receivable Net Current
AccountsReceivableNetCurrent
10837000
CY2019Q4 us-gaap Accrued Income Taxes Current
AccruedIncomeTaxesCurrent
1324000
CY2018Q4 us-gaap Accrued Income Taxes Current
AccruedIncomeTaxesCurrent
1668000
CY2019Q4 us-gaap Accrued Liabilities Current
AccruedLiabilitiesCurrent
9373000
CY2018Q4 us-gaap Accrued Liabilities Current
AccruedLiabilitiesCurrent
5899000
CY2019Q4 us-gaap Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
25198000
CY2018Q4 us-gaap Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
16920000
CY2018Q4 us-gaap Accumulated Other Comprehensive Income Loss Before Tax1
AccumulatedOtherComprehensiveIncomeLossBeforeTax1
-1069000
CY2019Q4 us-gaap Accumulated Other Comprehensive Income Loss Before Tax1
AccumulatedOtherComprehensiveIncomeLossBeforeTax1
625000
CY2017Q4 us-gaap Accumulated Other Comprehensive Income Loss Before Tax1
AccumulatedOtherComprehensiveIncomeLossBeforeTax1
CY2016Q4 us-gaap Accumulated Other Comprehensive Income Loss Before Tax1
AccumulatedOtherComprehensiveIncomeLossBeforeTax1
156000
CY2018Q4 us-gaap Accumulated Other Comprehensive Income Loss Net Of Tax
AccumulatedOtherComprehensiveIncomeLossNetOfTax
-810000
CY2019Q4 us-gaap Accumulated Other Comprehensive Income Loss Net Of Tax
AccumulatedOtherComprehensiveIncomeLossNetOfTax
473000
CY2017Q4 us-gaap Accumulated Other Comprehensive Income Loss Net Of Tax
AccumulatedOtherComprehensiveIncomeLossNetOfTax
CY2016Q4 us-gaap Accumulated Other Comprehensive Income Loss Net Of Tax
AccumulatedOtherComprehensiveIncomeLossNetOfTax
100000
CY2019Q4 us-gaap Additional Paid In Capital Common Stock
AdditionalPaidInCapitalCommonStock
880000
CY2018Q4 us-gaap Additional Paid In Capital Common Stock
AdditionalPaidInCapitalCommonStock
3953000
CY2017 us-gaap Adjustments Related To Tax Withholding For Share Based Compensation
AdjustmentsRelatedToTaxWithholdingForShareBasedCompensation
1462000
CY2018 us-gaap Adjustments Related To Tax Withholding For Share Based Compensation
AdjustmentsRelatedToTaxWithholdingForShareBasedCompensation
445000
CY2019 us-gaap Adjustments Related To Tax Withholding For Share Based Compensation
AdjustmentsRelatedToTaxWithholdingForShareBasedCompensation
548000
CY2017 us-gaap Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
1457000
CY2018 us-gaap Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
2574000
CY2019 us-gaap Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
2876000
CY2019 us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
2876000
CY2018 us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
2574000
CY2017 us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
1457000
CY2019Q4 us-gaap Assets Current
AssetsCurrent
145675000
CY2018Q4 us-gaap Assets Current
AssetsCurrent
131926000
CY2018Q4 us-gaap Allowance For Doubtful Accounts Receivable
AllowanceForDoubtfulAccountsReceivable
132000
CY2019Q4 us-gaap Allowance For Doubtful Accounts Receivable
AllowanceForDoubtfulAccountsReceivable
131000
CY2017Q4 us-gaap Allowance For Doubtful Accounts Receivable
AllowanceForDoubtfulAccountsReceivable
168000
CY2019Q4 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
131000
CY2018Q4 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
132000
CY2019 us-gaap Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
CY2018 us-gaap Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
CY2019 us-gaap Amortization Of Financing Costs And Discounts
AmortizationOfFinancingCostsAndDiscounts
297000
CY2018 us-gaap Amortization Of Financing Costs And Discounts
AmortizationOfFinancingCostsAndDiscounts
281000
CY2017 us-gaap Amortization Of Financing Costs And Discounts
AmortizationOfFinancingCostsAndDiscounts
273000
CY2019 us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
10333000
CY2018 us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
9243000
CY2017 us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
8400000
CY2019Q4 us-gaap Assets
Assets
425918000
CY2018Q4 us-gaap Assets
Assets
339575000
CY2019 us-gaap Capital Expenditures Incurred But Not Yet Paid
CapitalExpendituresIncurredButNotYetPaid
548000
CY2018 us-gaap Capital Expenditures Incurred But Not Yet Paid
CapitalExpendituresIncurredButNotYetPaid
1462000
CY2017 us-gaap Capital Expenditures Incurred But Not Yet Paid
CapitalExpendituresIncurredButNotYetPaid
214000
CY2018Q1 us-gaap Capitalized Contract Cost Net
CapitalizedContractCostNet
1400000
CY2019Q4 us-gaap Capitalized Contract Cost Net Noncurrent
CapitalizedContractCostNetNoncurrent
1400000
CY2018Q4 us-gaap Capitalized Contract Cost Net Noncurrent
CapitalizedContractCostNetNoncurrent
1390000
CY2018Q4 us-gaap Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
12637000
CY2017Q4 us-gaap Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
18049000
CY2016Q4 us-gaap Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
15105000
CY2019Q4 us-gaap Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
20393000
CY2019 us-gaap Cash And Cash Equivalents Period Increase Decrease
CashAndCashEquivalentsPeriodIncreaseDecrease
7756000
CY2018 us-gaap Cash And Cash Equivalents Period Increase Decrease
CashAndCashEquivalentsPeriodIncreaseDecrease
-5412000
CY2017 us-gaap Cash And Cash Equivalents Period Increase Decrease
CashAndCashEquivalentsPeriodIncreaseDecrease
2944000
CY2019Q4 us-gaap Commitments And Contingencies
CommitmentsAndContingencies
CY2018Q4 us-gaap Commitments And Contingencies
CommitmentsAndContingencies
CY2019Q4 us-gaap Common Stock No Par Value
CommonStockNoParValue
0
CY2018Q4 us-gaap Common Stock No Par Value
CommonStockNoParValue
0
CY2019Q4 us-gaap Common Stock Shares Authorized
CommonStockSharesAuthorized
250000000
CY2018Q4 us-gaap Common Stock Shares Authorized
CommonStockSharesAuthorized
250000000
CY2019Q4 us-gaap Common Stock Shares Issued
CommonStockSharesIssued
10585159
CY2018Q4 us-gaap Common Stock Shares Issued
CommonStockSharesIssued
10627988
CY2019Q4 us-gaap Common Stock Shares Outstanding
CommonStockSharesOutstanding
10585159
CY2018Q4 us-gaap Common Stock Shares Outstanding
CommonStockSharesOutstanding
10627988
CY2019Q4 us-gaap Common Stock Value
CommonStockValue
16633000
CY2018Q4 us-gaap Common Stock Value
CommonStockValue
15823000
CY2018 us-gaap Cost Of Goods And Services Sold Depreciation
CostOfGoodsAndServicesSoldDepreciation
5298000
CY2017 us-gaap Cost Of Goods And Services Sold Depreciation
CostOfGoodsAndServicesSoldDepreciation
3142000
CY2019 us-gaap Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
16681000
CY2018 us-gaap Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
16325000
CY2017 us-gaap Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
22227000
CY2019 us-gaap Concentration Risk Credit Risk
ConcentrationRiskCreditRisk
<div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style=" font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify; text-indent: 36pt;"><div style="display: inline; font-style: italic;">(r) Concentration of credit risk</div></div> <div style=" font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify; text-indent: 36pt;">&nbsp;</div> <div style=" font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify; text-indent: 36pt;">Financial instruments that potentially subject the Company to concentrations of credit risk consist primarily of cash equivalents, accounts receivable and forward foreign exchange contracts. Cash equivalents consist of deposits with major commercial banks, the maturities of which are <div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">three</div> months or less from the date of purchase. With respect to accounts receivable, the Company performs periodic credit evaluations of the financial condition of its customers and typically does <div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">not</div> require collateral from them. The counterparty to any forward foreign exchange contracts is a major commercial bank which management believes does <div style="display: inline; font-style: italic; font-weight: inherit; font-style: normal;">not</div> represent a significant credit risk. Management assesses the need for allowances for potential credit losses by considering the credit risk of specific customers, historical trends and other information.</div></div></div></div></div></div></div></div></div></div></div></div></div>
CY2019Q1 us-gaap Contract With Customer Liability
ContractWithCustomerLiability
143700000
CY2018Q4 us-gaap Contract With Customer Liability
ContractWithCustomerLiability
143694000
CY2019Q4 us-gaap Contract With Customer Liability
ContractWithCustomerLiability
149303000
CY2019Q4 us-gaap Contract With Customer Liability Current
ContractWithCustomerLiabilityCurrent
123101000
CY2018Q4 us-gaap Contract With Customer Liability Current
ContractWithCustomerLiabilityCurrent
116734000
CY2019 us-gaap Contract With Customer Liability Increase Decrease For Contract Acquired In Business Combination
ContractWithCustomerLiabilityIncreaseDecreaseForContractAcquiredInBusinessCombination
12510000
CY2019Q4 us-gaap Contract With Customer Liability Noncurrent
ContractWithCustomerLiabilityNoncurrent
26202000
CY2018Q4 us-gaap Contract With Customer Liability Noncurrent
ContractWithCustomerLiabilityNoncurrent
26960000
CY2019 us-gaap Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
-239548000
CY2019Q4 us-gaap Contractual Obligation
ContractualObligation
220892000
CY2019Q4 us-gaap Contractual Obligation Due After Fifth Year
ContractualObligationDueAfterFifthYear
10834000
CY2019Q4 us-gaap Contractual Obligation Due In Fifth Year
ContractualObligationDueInFifthYear
20494000
CY2019Q4 us-gaap Contractual Obligation Due In Fourth Year
ContractualObligationDueInFourthYear
129692000
CY2019Q4 us-gaap Contractual Obligation Due In Next Twelve Months
ContractualObligationDueInNextTwelveMonths
31401000
CY2019Q4 us-gaap Contractual Obligation Due In Second Year
ContractualObligationDueInSecondYear
14462000
CY2019Q4 us-gaap Contractual Obligation Due In Third Year
ContractualObligationDueInThirdYear
14009000
CY2019 us-gaap Cost Of Goods And Service Excluding Depreciation Depletion And Amortization
CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization
217579000
CY2018 us-gaap Cost Of Goods And Service Excluding Depreciation Depletion And Amortization
CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization
232103000
CY2017 us-gaap Cost Of Goods And Service Excluding Depreciation Depletion And Amortization
CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization
230600000
CY2019 us-gaap Cost Of Goods And Services Sold Amortization
CostOfGoodsAndServicesSoldAmortization
1124000
CY2018 us-gaap Cost Of Goods And Services Sold Amortization
CostOfGoodsAndServicesSoldAmortization
1996000
CY2017 us-gaap Cost Of Goods And Services Sold Amortization
CostOfGoodsAndServicesSoldAmortization
1834000
CY2019 us-gaap Cost Of Goods And Services Sold Depreciation
CostOfGoodsAndServicesSoldDepreciation
8475000
CY2019 us-gaap Cost Of Revenue
CostOfRevenue
236368000
CY2018 us-gaap Cost Of Revenue
CostOfRevenue
249243000
CY2017 us-gaap Cost Of Revenue
CostOfRevenue
244900000
CY2017Q4 us-gaap Cumulative Effect Of New Accounting Principle In Period Of Adoption
CumulativeEffectOfNewAccountingPrincipleInPeriodOfAdoption
1063000
CY2019Q4 us-gaap Debt Instrument Unamortized Discount
DebtInstrumentUnamortizedDiscount
897000
CY2018Q4 us-gaap Debt Instrument Unamortized Discount
DebtInstrumentUnamortizedDiscount
555000
CY2019 us-gaap Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
1285000
CY2018 us-gaap Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
1038000
CY2017 us-gaap Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
-3337000
CY2019Q4 us-gaap Deferred Income Tax Liabilities
DeferredIncomeTaxLiabilities
34242000
CY2018Q4 us-gaap Deferred Income Tax Liabilities
DeferredIncomeTaxLiabilities
31046000
CY2019Q4 us-gaap Deferred Income Tax Liabilities Net
DeferredIncomeTaxLiabilitiesNet
25471000
CY2018Q4 us-gaap Deferred Income Tax Liabilities Net
DeferredIncomeTaxLiabilitiesNet
20925000
CY2019Q4 us-gaap Deferred Rent Credit Current
DeferredRentCreditCurrent
CY2018Q4 us-gaap Deferred Rent Credit Current
DeferredRentCreditCurrent
21000
CY2019Q4 us-gaap Deferred Rent Credit Noncurrent
DeferredRentCreditNoncurrent
CY2018Q4 us-gaap Deferred Rent Credit Noncurrent
DeferredRentCreditNoncurrent
116000
CY2019Q4 us-gaap Deferred Tax Assets Deferred Income
DeferredTaxAssetsDeferredIncome
6301000
CY2018Q4 us-gaap Deferred Tax Assets Deferred Income
DeferredTaxAssetsDeferredIncome
6497000
CY2019Q4 us-gaap Deferred Tax Assets Gross
DeferredTaxAssetsGross
18136000
CY2018Q4 us-gaap Deferred Tax Assets Gross
DeferredTaxAssetsGross
14208000
CY2019Q4 us-gaap Deferred Tax Assets Net
DeferredTaxAssetsNet
8771000
CY2018Q4 us-gaap Deferred Tax Assets Net
DeferredTaxAssetsNet
10121000
CY2019Q4 us-gaap Deferred Tax Assets Operating Loss Carryforwards
DeferredTaxAssetsOperatingLossCarryforwards
1341000
CY2018Q4 us-gaap Deferred Tax Assets Operating Loss Carryforwards
DeferredTaxAssetsOperatingLossCarryforwards
1892000
CY2019Q4 us-gaap Deferred Tax Assets Tax Deferred Expense Reserves And Accruals
DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals
1490000
CY2018Q4 us-gaap Deferred Tax Assets Tax Deferred Expense Reserves And Accruals
DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals
1955000
CY2019Q4 us-gaap Deferred Tax Assets Valuation Allowance
DeferredTaxAssetsValuationAllowance
9365000
CY2018Q4 us-gaap Deferred Tax Assets Valuation Allowance
DeferredTaxAssetsValuationAllowance
4087000
CY2019Q4 us-gaap Deferred Tax Liabilities
DeferredTaxLiabilities
25471000
CY2018Q4 us-gaap Deferred Tax Liabilities
DeferredTaxLiabilities
20925000
CY2019Q4 us-gaap Deferred Tax Liabilities Goodwill And Intangible Assets Intangible Assets
DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
3110000
CY2018Q4 us-gaap Deferred Tax Liabilities Goodwill And Intangible Assets Intangible Assets
DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
3110000
CY2019Q4 us-gaap Deferred Tax Liabilities Other Finite Lived Assets
DeferredTaxLiabilitiesOtherFiniteLivedAssets
5958000
CY2018Q4 us-gaap Deferred Tax Liabilities Other Finite Lived Assets
DeferredTaxLiabilitiesOtherFiniteLivedAssets
6115000
CY2019Q4 us-gaap Deferred Tax Liabilities Prepaid Expenses
DeferredTaxLiabilitiesPrepaidExpenses
16237000
CY2018Q4 us-gaap Deferred Tax Liabilities Prepaid Expenses
DeferredTaxLiabilitiesPrepaidExpenses
15950000
CY2019Q4 us-gaap Deferred Tax Liabilities Property Plant And Equipment
DeferredTaxLiabilitiesPropertyPlantAndEquipment
6925000
CY2018Q4 us-gaap Deferred Tax Liabilities Property Plant And Equipment
DeferredTaxLiabilitiesPropertyPlantAndEquipment
5871000
CY2019 us-gaap Depreciation
Depreciation
8961000
CY2018 us-gaap Depreciation
Depreciation
5722000
CY2017 us-gaap Depreciation
Depreciation
3727000
CY2019 us-gaap Depreciation And Amortization
DepreciationAndAmortization
486000
CY2018 us-gaap Depreciation And Amortization
DepreciationAndAmortization
424000
CY2017 us-gaap Depreciation And Amortization
DepreciationAndAmortization
585000
CY2019Q4 us-gaap Derivative Assets Current
DerivativeAssetsCurrent
731000
CY2018Q4 us-gaap Derivative Assets Current
DerivativeAssetsCurrent
CY2019Q4 us-gaap Derivative Average Forward Exchange Rate1
DerivativeAverageForwardExchangeRate1
1.3296
CY2019Q4 us-gaap Derivative Liabilities Current
DerivativeLiabilitiesCurrent
CY2018Q4 us-gaap Derivative Liabilities Current
DerivativeLiabilitiesCurrent
1276000
CY2019Q4 us-gaap Derivative Notional Amount
DerivativeNotionalAmount
30486000
CY2019 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
1.45
CY2018 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
1.62
CY2017 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
2.12
CY2019Q4 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.55
CY2019Q3 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.40
CY2019Q2 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.25
CY2019Q1 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.26
CY2018Q4 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.42
CY2018Q3 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.50
CY2018Q2 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.34
CY2018Q1 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.35
CY2019 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
1.43
CY2018 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
1.59
CY2017 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
2.07
CY2019Q4 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.54
CY2019Q3 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.39
CY2019Q2 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.24
CY2019Q1 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.26
CY2018Q4 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.41
CY2018Q3 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.50
CY2018Q2 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.33
CY2018Q1 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.35
CY2019 us-gaap Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
0.21
CY2019Q4 us-gaap Finite Lived Intangible Assets Amortization Expense Year Two
FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
10455000
CY2019Q4 us-gaap Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
45347000
CY2018Q4 us-gaap Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
36974000
CY2018 us-gaap Finitelived Intangible Assets Acquired1
FinitelivedIntangibleAssetsAcquired1
565000
CY2019 us-gaap Finitelived Intangible Assets Acquired1
FinitelivedIntangibleAssetsAcquired1
91000
CY2017 us-gaap Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
0.35
CY2018 us-gaap Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
0.21
CY2019 us-gaap Excess Tax Benefit From Share Based Compensation Operating Activities
ExcessTaxBenefitFromShareBasedCompensationOperatingActivities
634000
CY2018 us-gaap Excess Tax Benefit From Share Based Compensation Operating Activities
ExcessTaxBenefitFromShareBasedCompensationOperatingActivities
697000
CY2017 us-gaap Excess Tax Benefit From Share Based Compensation Operating Activities
ExcessTaxBenefitFromShareBasedCompensationOperatingActivities
2796000
CY2019Q4 us-gaap Finite Lived Intangible Assets Amortization Expense After Year Five
FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
2839000
CY2019Q4 us-gaap Finite Lived Intangible Assets Amortization Expense Next Twelve Months
FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
9416000
CY2019Q4 us-gaap Finite Lived Intangible Assets Amortization Expense Year Five
FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
2796000
CY2019Q4 us-gaap Finite Lived Intangible Assets Amortization Expense Year Four
FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
9386000
CY2019Q4 us-gaap Finite Lived Intangible Assets Amortization Expense Year Three
FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
10455000
CY2019Q4 us-gaap Foreign Currency Contract Asset Fair Value Disclosure
ForeignCurrencyContractAssetFairValueDisclosure
731000
CY2019 us-gaap Gain Loss On Sale Of Derivatives
GainLossOnSaleOfDerivatives
198000
CY2018 us-gaap Gain Loss On Sale Of Derivatives
GainLossOnSaleOfDerivatives
-254000
CY2017 us-gaap Gain Loss On Sale Of Derivatives
GainLossOnSaleOfDerivatives
98000
CY2019 us-gaap Gain Loss On Sale Of Property Plant Equipment
GainLossOnSaleOfPropertyPlantEquipment
-73000
CY2018 us-gaap Gain Loss On Sale Of Property Plant Equipment
GainLossOnSaleOfPropertyPlantEquipment
CY2017 us-gaap Gain Loss On Sale Of Property Plant Equipment
GainLossOnSaleOfPropertyPlantEquipment
CY2019 us-gaap General And Administrative Expense
GeneralAndAdministrativeExpense
17880000
CY2018 us-gaap General And Administrative Expense
GeneralAndAdministrativeExpense
17710000
CY2017 us-gaap General And Administrative Expense
GeneralAndAdministrativeExpense
13594000
CY2019Q4 us-gaap Goodwill
Goodwill
109818000
CY2018Q4 us-gaap Goodwill
Goodwill
90054000
CY2019 us-gaap Goodwill Impairment Loss
GoodwillImpairmentLoss
0
CY2018 us-gaap Goodwill Impairment Loss
GoodwillImpairmentLoss
0
CY2019 us-gaap Gross Profit
GrossProfit
100777000
CY2018 us-gaap Gross Profit
GrossProfit
96770000
CY2019Q3 us-gaap Gross Profit
GrossProfit
27574000
CY2017 us-gaap Gross Profit
GrossProfit
84521000
CY2019Q4 us-gaap Gross Profit
GrossProfit
26045000
CY2019Q2 us-gaap Gross Profit
GrossProfit
24507000
CY2017 us-gaap Income Tax Reconciliation State And Local Income Taxes
IncomeTaxReconciliationStateAndLocalIncomeTaxes
657000
CY2019 us-gaap Income Taxes Paid Net
IncomeTaxesPaidNet
7941000
CY2018 us-gaap Income Taxes Paid Net
IncomeTaxesPaidNet
6799000
CY2017 us-gaap Income Taxes Paid Net
IncomeTaxesPaidNet
7815000
CY2019Q1 us-gaap Gross Profit
GrossProfit
22651000
CY2018Q4 us-gaap Gross Profit
GrossProfit
27731000
CY2018Q3 us-gaap Gross Profit
GrossProfit
24261000
CY2018Q2 us-gaap Gross Profit
GrossProfit
22158000
CY2018Q1 us-gaap Gross Profit
GrossProfit
22619000
CY2019 us-gaap Impairment Of Intangible Assets Indefinitelived Excluding Goodwill
ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
CY2017 us-gaap Impairment Of Intangible Assets Indefinitelived Excluding Goodwill
ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
111000
CY2018 us-gaap Impairment Of Intangible Assets Indefinitelived Excluding Goodwill
ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
CY2019 us-gaap Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
24571000
CY2018 us-gaap Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
26155000
CY2017 us-gaap Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
24075000
CY2019 us-gaap Income Loss From Continuing Operations Before Income Taxes Minority Interest And Income Loss From Equity Method Investments
IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments
24571000
CY2018 us-gaap Income Loss From Continuing Operations Before Income Taxes Minority Interest And Income Loss From Equity Method Investments
IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments
26155000
CY2017 us-gaap Income Loss From Continuing Operations Before Income Taxes Minority Interest And Income Loss From Equity Method Investments
IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments
24075000
CY2019 us-gaap Income Loss From Continuing Operations Including Portion Attributable To Noncontrolling Interest
IncomeLossFromContinuingOperationsIncludingPortionAttributableToNoncontrollingInterest
15398000
CY2018 us-gaap Income Loss From Continuing Operations Including Portion Attributable To Noncontrolling Interest
IncomeLossFromContinuingOperationsIncludingPortionAttributableToNoncontrollingInterest
17135000
CY2017 us-gaap Income Loss From Continuing Operations Including Portion Attributable To Noncontrolling Interest
IncomeLossFromContinuingOperationsIncludingPortionAttributableToNoncontrollingInterest
22327000
CY2019 us-gaap Income Tax Expense Benefit
IncomeTaxExpenseBenefit
9173000
CY2018 us-gaap Income Tax Expense Benefit
IncomeTaxExpenseBenefit
9020000
CY2017 us-gaap Income Tax Expense Benefit
IncomeTaxExpenseBenefit
1748000
CY2019 us-gaap Income Tax Reconciliation Income Tax Expense Benefit At Federal Statutory Income Tax Rate
IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate
5160000
CY2018 us-gaap Income Tax Reconciliation Income Tax Expense Benefit At Federal Statutory Income Tax Rate
IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate
5492000
CY2017 us-gaap Income Tax Reconciliation Income Tax Expense Benefit At Federal Statutory Income Tax Rate
IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate
8185000
CY2019 us-gaap Income Tax Reconciliation Nondeductible Expense
IncomeTaxReconciliationNondeductibleExpense
-103000
CY2018 us-gaap Income Tax Reconciliation Nondeductible Expense
IncomeTaxReconciliationNondeductibleExpense
159000
CY2017 us-gaap Income Tax Reconciliation Nondeductible Expense
IncomeTaxReconciliationNondeductibleExpense
1636000
CY2019 us-gaap Income Tax Reconciliation Other Adjustments
IncomeTaxReconciliationOtherAdjustments
-728000
CY2018 us-gaap Income Tax Reconciliation Other Adjustments
IncomeTaxReconciliationOtherAdjustments
409000
CY2017 us-gaap Income Tax Reconciliation Other Adjustments
IncomeTaxReconciliationOtherAdjustments
-77000
CY2019 us-gaap Income Tax Reconciliation State And Local Income Taxes
IncomeTaxReconciliationStateAndLocalIncomeTaxes
526000
CY2018 us-gaap Income Tax Reconciliation State And Local Income Taxes
IncomeTaxReconciliationStateAndLocalIncomeTaxes
846000
CY2019Q4 us-gaap Income Taxes Receivable
IncomeTaxesReceivable
1800000
CY2018Q4 us-gaap Income Taxes Receivable
IncomeTaxesReceivable
1423000
CY2019 us-gaap Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
-1222000
CY2018 us-gaap Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
171000
CY2017 us-gaap Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
-3826000
CY2019 us-gaap Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
3015000
CY2018 us-gaap Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
-1539000
CY2017 us-gaap Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
-1010000
CY2019 us-gaap Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
2329000
CY2017 us-gaap Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
4933000
CY2018 us-gaap Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
-513000
CY2017 us-gaap Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
-1275000
CY2019 us-gaap Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
-6900000
CY2018 us-gaap Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
-16888000
CY2019 us-gaap Increase Decrease In Income Taxes Receivable
IncreaseDecreaseInIncomeTaxesReceivable
89000
CY2018 us-gaap Increase Decrease In Income Taxes Receivable
IncreaseDecreaseInIncomeTaxesReceivable
-2691000
CY2017 us-gaap Increase Decrease In Income Taxes Receivable
IncreaseDecreaseInIncomeTaxesReceivable
426000
CY2019 us-gaap Increase Decrease In Inventories
IncreaseDecreaseInInventories
-318000
CY2018 us-gaap Increase Decrease In Inventories
IncreaseDecreaseInInventories
831000
CY2017 us-gaap Increase Decrease In Inventories
IncreaseDecreaseInInventories
1733000
CY2019 us-gaap Increase Decrease In Prepaid Deferred Expense And Other Assets
IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
-2904000
CY2018 us-gaap Increase Decrease In Prepaid Deferred Expense And Other Assets
IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
1286000
CY2017 us-gaap Increase Decrease In Prepaid Deferred Expense And Other Assets
IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
1642000
CY2019 us-gaap Increase Decrease In Prepaid Expense
IncreaseDecreaseInPrepaidExpense
-7678000
CY2018 us-gaap Increase Decrease In Prepaid Expense
IncreaseDecreaseInPrepaidExpense
-20476000
CY2017 us-gaap Increase Decrease In Prepaid Expense
IncreaseDecreaseInPrepaidExpense
-4030000
CY2019 us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
149013
CY2018 us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
189448
CY2017 us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
256266
CY2017Q4 us-gaap Intangible Assets Net Excluding Goodwill
IntangibleAssetsNetExcludingGoodwill
58414000
CY2018Q4 us-gaap Intangible Assets Net Excluding Goodwill
IntangibleAssetsNetExcludingGoodwill
49395000
CY2019Q4 us-gaap Intangible Assets Net Excluding Goodwill
IntangibleAssetsNetExcludingGoodwill
57654000
CY2019 us-gaap Interest Income Expense Net
InterestIncomeExpenseNet
-4769000
CY2018 us-gaap Interest Income Expense Net
InterestIncomeExpenseNet
-3687000
CY2017 us-gaap Interest Income Expense Net
InterestIncomeExpenseNet
-3567000
CY2019 us-gaap Interest Paid Net
InterestPaidNet
4785000
CY2018 us-gaap Interest Paid Net
InterestPaidNet
3712000
CY2017 us-gaap Interest Paid Net
InterestPaidNet
3587000
CY2019Q4 us-gaap Inventory Net
InventoryNet
3457000
CY2018Q4 us-gaap Inventory Net
InventoryNet
3775000
CY2019 us-gaap Lease Cost
LeaseCost
4754000
CY2019Q4 us-gaap Lessee Operating Lease Liability Payments Due
LesseeOperatingLeaseLiabilityPaymentsDue
13606000
CY2019Q4 us-gaap Lessee Operating Lease Liability Payments Due After Year Five
LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
5162000
CY2019Q4 us-gaap Lessee Operating Lease Liability Payments Due Next Twelve Months
LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
1910000
CY2019Q4 us-gaap Lessee Operating Lease Liability Payments Due Year Five
LesseeOperatingLeaseLiabilityPaymentsDueYearFive
1380000
CY2019Q4 us-gaap Lessee Operating Lease Liability Payments Due Year Four
LesseeOperatingLeaseLiabilityPaymentsDueYearFour
1667000
CY2019Q4 us-gaap Lessee Operating Lease Liability Payments Due Year Three
LesseeOperatingLeaseLiabilityPaymentsDueYearThree
1704000
CY2019Q4 us-gaap Lessee Operating Lease Liability Payments Due Year Two
LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
1783000
CY2019Q4 us-gaap Lessee Operating Lease Liability Undiscounted Excess Amount
LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
2769000
CY2019Q4 us-gaap Lessee Operating Lease Renewal Term
LesseeOperatingLeaseRenewalTerm
P5Y
CY2019Q4 us-gaap Liabilities And Stockholders Equity
LiabilitiesAndStockholdersEquity
425918000
CY2018Q4 us-gaap Liabilities And Stockholders Equity
LiabilitiesAndStockholdersEquity
339575000
CY2019Q4 us-gaap Liabilities Current
LiabilitiesCurrent
156908000
CY2018Q4 us-gaap Liabilities Current
LiabilitiesCurrent
165347000
CY2019Q4 us-gaap Loans Payable
LoansPayable
113503000
CY2018Q4 us-gaap Loans Payable
LoansPayable
64601000
CY2019Q4 us-gaap Loans Payable Current
LoansPayableCurrent
CY2018Q4 us-gaap Loans Payable Current
LoansPayableCurrent
18400000
CY2019Q4 us-gaap Long Term Debt
LongTermDebt
114400000
CY2019Q4 us-gaap Long Term Debt Maturities Repayments Of Principal After Year Five
LongTermDebtMaturitiesRepaymentsOfPrincipalAfterYearFive
CY2019Q4 us-gaap Long Term Debt Maturities Repayments Of Principal In Next Twelve Months
LongTermDebtMaturitiesRepaymentsOfPrincipalInNextTwelveMonths
CY2019Q4 us-gaap Long Term Debt Maturities Repayments Of Principal In Year Five
LongTermDebtMaturitiesRepaymentsOfPrincipalInYearFive
CY2019Q4 us-gaap Long Term Debt Maturities Repayments Of Principal In Year Four
LongTermDebtMaturitiesRepaymentsOfPrincipalInYearFour
114400000
CY2019 us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
-4769000
CY2018 us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
-3169000
CY2017 us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
-3007000
CY2019Q4 us-gaap Long Term Debt Maturities Repayments Of Principal In Year Three
LongTermDebtMaturitiesRepaymentsOfPrincipalInYearThree
CY2019Q4 us-gaap Long Term Debt Maturities Repayments Of Principal In Year Two
LongTermDebtMaturitiesRepaymentsOfPrincipalInYearTwo
CY2019Q4 us-gaap Long Term Loans Payable
LongTermLoansPayable
113503000
CY2018Q4 us-gaap Long Term Loans Payable
LongTermLoansPayable
46201000
CY2019 us-gaap Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
43461000
CY2018 us-gaap Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
-12937000
CY2017 us-gaap Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
65162000
CY2019 us-gaap Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
-76086000
CY2018 us-gaap Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
-29684000
CY2017 us-gaap Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
-94114000
CY2019 us-gaap Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
40381000
CY2018 us-gaap Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
37209000
CY2017 us-gaap Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
31896000
CY2019 us-gaap Net Income Loss
NetIncomeLoss
15398000
CY2018 us-gaap Net Income Loss
NetIncomeLoss
17135000
CY2017 us-gaap Net Income Loss
NetIncomeLoss
22327000
CY2019Q4 us-gaap Net Income Loss
NetIncomeLoss
5778000
CY2019Q3 us-gaap Net Income Loss
NetIncomeLoss
4205000
CY2019Q2 us-gaap Net Income Loss
NetIncomeLoss
2616000
CY2019Q1 us-gaap Net Income Loss
NetIncomeLoss
2799000
CY2018Q4 us-gaap Net Income Loss
NetIncomeLoss
4436000
CY2018Q3 us-gaap Net Income Loss
NetIncomeLoss
5346000
CY2018Q2 us-gaap Net Income Loss
NetIncomeLoss
3608000
CY2018Q1 us-gaap Net Income Loss
NetIncomeLoss
3744000
CY2019 us-gaap Net Income Loss Attributable To Redeemable Noncontrolling Interest
NetIncomeLossAttributableToRedeemableNoncontrollingInterest
CY2018 us-gaap Net Income Loss Attributable To Redeemable Noncontrolling Interest
NetIncomeLossAttributableToRedeemableNoncontrollingInterest
26000
CY2017 us-gaap Net Income Loss Attributable To Redeemable Noncontrolling Interest
NetIncomeLossAttributableToRedeemableNoncontrollingInterest
387000
CY2019 us-gaap Number Of Operating Segments
NumberOfOperatingSegments
2
CY2019 us-gaap Operating Expenses
OperatingExpenses
71437000
CY2018 us-gaap Operating Expenses
OperatingExpenses
67446000
CY2017 us-gaap Operating Expenses
OperatingExpenses
57439000
CY2019 us-gaap Operating Income Loss
OperatingIncomeLoss
29340000
CY2018 us-gaap Operating Income Loss
OperatingIncomeLoss
29324000
CY2017 us-gaap Operating Income Loss
OperatingIncomeLoss
27082000
CY2019 us-gaap Operating Lease Cost
OperatingLeaseCost
3057000
CY2019Q4 us-gaap Operating Lease Liability
OperatingLeaseLiability
10837000
CY2019Q4 us-gaap Operating Lease Liability Current
OperatingLeaseLiabilityCurrent
1413000
CY2018Q4 us-gaap Operating Lease Liability Current
OperatingLeaseLiabilityCurrent
CY2019Q4 us-gaap Operating Lease Liability Noncurrent
OperatingLeaseLiabilityNoncurrent
9424000
CY2018Q4 us-gaap Operating Lease Liability Noncurrent
OperatingLeaseLiabilityNoncurrent
CY2019 us-gaap Operating Lease Payments
OperatingLeasePayments
3130000
CY2019Q4 us-gaap Operating Lease Right Of Use Asset
OperatingLeaseRightOfUseAsset
11335000
CY2018Q4 us-gaap Operating Lease Right Of Use Asset
OperatingLeaseRightOfUseAsset
CY2019Q4 us-gaap Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
0.052
CY2019Q1 us-gaap Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
0.0504
CY2019Q4 us-gaap Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
P8Y226D
CY2019Q1 us-gaap Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
P5Y226D
CY2019Q4 us-gaap Operating Leases Future Minimum Payments Due
OperatingLeasesFutureMinimumPaymentsDue
14529000
CY2018 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Reclassification Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossReclassificationTax
69000
CY2017 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Reclassification Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossReclassificationTax
-369000
CY2017 us-gaap Other Comprehensive Income Loss Tax
OtherComprehensiveIncomeLossTax
56000
CY2019Q4 us-gaap Operating Leases Future Minimum Payments Due Current
OperatingLeasesFutureMinimumPaymentsDueCurrent
2248000
CY2019Q4 us-gaap Operating Leases Future Minimum Payments Due In Five Years
OperatingLeasesFutureMinimumPaymentsDueInFiveYears
1420000
CY2019Q4 us-gaap Operating Leases Future Minimum Payments Due In Four Years
OperatingLeasesFutureMinimumPaymentsDueInFourYears
1708000
CY2019Q4 us-gaap Operating Leases Future Minimum Payments Due In Three Years
OperatingLeasesFutureMinimumPaymentsDueInThreeYears
1745000
CY2019Q4 us-gaap Operating Leases Future Minimum Payments Due In Two Years
OperatingLeasesFutureMinimumPaymentsDueInTwoYears
1824000
CY2019Q4 us-gaap Operating Leases Future Minimum Payments Due Thereafter
OperatingLeasesFutureMinimumPaymentsDueThereafter
5584000
CY2019Q4 us-gaap Other Accrued Liabilities Noncurrent
OtherAccruedLiabilitiesNoncurrent
216000
CY2018Q4 us-gaap Other Accrued Liabilities Noncurrent
OtherAccruedLiabilitiesNoncurrent
250000
CY2019 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Before Reclassification After Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAfterTax
1101000
CY2018 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Before Reclassification After Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAfterTax
-1022000
CY2017 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Before Reclassification After Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAfterTax
550000
CY2019 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Before Reclassification And Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax
1454000
CY2018 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Before Reclassification And Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax
-1350000
CY2017 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Before Reclassification And Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax
863000
CY2019 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Before Reclassification Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationTax
-353000
CY2018 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Before Reclassification Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationTax
328000
CY2017 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Before Reclassification Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationTax
-313000
CY2019 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Reclassification After Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossReclassificationAfterTax
-182000
CY2018 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Reclassification After Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossReclassificationAfterTax
-212000
CY2017 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Reclassification After Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossReclassificationAfterTax
650000
CY2019 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Reclassification Before Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossReclassificationBeforeTax
-240000
CY2018 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Reclassification Before Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossReclassificationBeforeTax
-281000
CY2017 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Reclassification Before Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossReclassificationBeforeTax
1019000
CY2019 us-gaap Other Comprehensive Income Loss Cash Flow Hedge Gain Loss Reclassification Tax
OtherComprehensiveIncomeLossCashFlowHedgeGainLossReclassificationTax
58000
CY2019 us-gaap Other Comprehensive Income Loss Derivatives Qualifying As Hedges Before Tax
OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesBeforeTax
1694000
CY2018 us-gaap Other Comprehensive Income Loss Derivatives Qualifying As Hedges Before Tax
OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesBeforeTax
-1069000
CY2017 us-gaap Other Comprehensive Income Loss Derivatives Qualifying As Hedges Before Tax
OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesBeforeTax
-156000
CY2019 us-gaap Other Comprehensive Income Loss Derivatives Qualifying As Hedges Net Of Tax
OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesNetOfTax
1283000
CY2018 us-gaap Other Comprehensive Income Loss Derivatives Qualifying As Hedges Net Of Tax
OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesNetOfTax
-810000
CY2017 us-gaap Other Comprehensive Income Loss Derivatives Qualifying As Hedges Net Of Tax
OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesNetOfTax
-100000
CY2019 us-gaap Other Comprehensive Income Loss Derivatives Qualifying As Hedges Tax
OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax
-411000
CY2018 us-gaap Other Comprehensive Income Loss Derivatives Qualifying As Hedges Tax
OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax
259000
CY2017 us-gaap Other Comprehensive Income Loss Derivatives Qualifying As Hedges Tax
OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax
56000
CY2017 us-gaap Other Comprehensive Income Loss Net Of Tax
OtherComprehensiveIncomeLossNetOfTax
-100000
CY2018 us-gaap Other Comprehensive Income Loss Net Of Tax
OtherComprehensiveIncomeLossNetOfTax
-810000
CY2019 us-gaap Other Comprehensive Income Loss Net Of Tax
OtherComprehensiveIncomeLossNetOfTax
1283000
CY2019 us-gaap Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
1283000
CY2018 us-gaap Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
-810000
CY2017 us-gaap Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
-100000
CY2019 us-gaap Other Comprehensive Income Loss Tax
OtherComprehensiveIncomeLossTax
-411000
CY2018 us-gaap Other Comprehensive Income Loss Tax
OtherComprehensiveIncomeLossTax
259000
CY2019Q4 us-gaap Other Long Term Debt Current
OtherLongTermDebtCurrent
CY2018Q4 us-gaap Other Long Term Debt Current
OtherLongTermDebtCurrent
18400000
CY2019 us-gaap Other Noncash Income Expense
OtherNoncashIncomeExpense
CY2018 us-gaap Other Noncash Income Expense
OtherNoncashIncomeExpense
429000
CY2017 us-gaap Other Noncash Income Expense
OtherNoncashIncomeExpense
515000
CY2019 us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
CY2018 us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
518000
CY2017 us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
560000
CY2019 us-gaap Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
4986000
CY2018 us-gaap Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
CY2017 us-gaap Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
CY2019 us-gaap Payments Of Financing Costs
PaymentsOfFinancingCosts
641000
CY2018 us-gaap Payments Of Financing Costs
PaymentsOfFinancingCosts
8000
CY2017 us-gaap Payments Of Financing Costs
PaymentsOfFinancingCosts
620000
CY2019 us-gaap Payments Related To Tax Withholding For Share Based Compensation
PaymentsRelatedToTaxWithholdingForShareBasedCompensation
548000
CY2018 us-gaap Payments Related To Tax Withholding For Share Based Compensation
PaymentsRelatedToTaxWithholdingForShareBasedCompensation
445000
CY2017 us-gaap Payments Related To Tax Withholding For Share Based Compensation
PaymentsRelatedToTaxWithholdingForShareBasedCompensation
1462000
CY2019 us-gaap Payments To Acquire Additional Interest In Subsidiaries
PaymentsToAcquireAdditionalInterestInSubsidiaries
CY2018 us-gaap Payments To Acquire Additional Interest In Subsidiaries
PaymentsToAcquireAdditionalInterestInSubsidiaries
1200000
CY2017 us-gaap Payments To Acquire Additional Interest In Subsidiaries
PaymentsToAcquireAdditionalInterestInSubsidiaries
2000000
CY2019 us-gaap Payments To Acquire Intangible Assets
PaymentsToAcquireIntangibleAssets
3566000
CY2018 us-gaap Payments To Acquire Intangible Assets
PaymentsToAcquireIntangibleAssets
565000
CY2017 us-gaap Payments To Acquire Intangible Assets
PaymentsToAcquireIntangibleAssets
2942000
CY2019 us-gaap Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
44070000
CY2018 us-gaap Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
27919000
CY2017 us-gaap Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
12935000
CY2019Q4 us-gaap Preferred Stock No Par Value
PreferredStockNoParValue
0
CY2018Q4 us-gaap Preferred Stock No Par Value
PreferredStockNoParValue
0
CY2019Q4 us-gaap Preferred Stock Shares Authorized
PreferredStockSharesAuthorized
1250000
CY2018Q4 us-gaap Preferred Stock Shares Authorized
PreferredStockSharesAuthorized
1250000
CY2019Q4 us-gaap Preferred Stock Shares Issued
PreferredStockSharesIssued
0
CY2018Q4 us-gaap Preferred Stock Shares Issued
PreferredStockSharesIssued
0
CY2019Q4 us-gaap Preferred Stock Shares Outstanding
PreferredStockSharesOutstanding
0
CY2018Q4 us-gaap Preferred Stock Shares Outstanding
PreferredStockSharesOutstanding
0
CY2019Q4 us-gaap Preferred Stock Value
PreferredStockValue
0
CY2018Q4 us-gaap Preferred Stock Value
PreferredStockValue
0
CY2019Q4 us-gaap Prepaid Expense And Other Assets Current
PrepaidExpenseAndOtherAssetsCurrent
13478000
CY2018Q4 us-gaap Prepaid Expense And Other Assets Current
PrepaidExpenseAndOtherAssetsCurrent
15472000
CY2019Q4 us-gaap Prepaid Expense Current
PrepaidExpenseCurrent
91252000
CY2018Q4 us-gaap Prepaid Expense Current
PrepaidExpenseCurrent
87782000
CY2019Q4 us-gaap Prepaid Expense Other Noncurrent
PrepaidExpenseOtherNoncurrent
17915000
CY2018Q4 us-gaap Prepaid Expense Other Noncurrent
PrepaidExpenseOtherNoncurrent
18745000
CY2019 us-gaap Proceeds From Notes Payable
ProceedsFromNotesPayable
57371000
CY2018 us-gaap Proceeds From Notes Payable
ProceedsFromNotesPayable
7000000
CY2017 us-gaap Proceeds From Notes Payable
ProceedsFromNotesPayable
86998000
CY2019 us-gaap Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
395000
CY2018 us-gaap Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
112000
CY2017 us-gaap Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
222000
CY2019Q4 us-gaap Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
107319000
CY2018Q4 us-gaap Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
64985000
CY2019Q4 us-gaap Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
82121000
CY2018Q4 us-gaap Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
48065000
CY2019Q4 us-gaap Purchase Obligation
PurchaseObligation
91963000
CY2019Q4 us-gaap Purchase Obligation Due After Fifth Year
PurchaseObligationDueAfterFifthYear
5250000
CY2019Q4 us-gaap Purchase Obligation Due In Fifth Year
PurchaseObligationDueInFifthYear
19074000
CY2019Q4 us-gaap Purchase Obligation Due In Fourth Year
PurchaseObligationDueInFourthYear
13584000
CY2019Q4 us-gaap Purchase Obligation Due In Next Twelve Months
PurchaseObligationDueInNextTwelveMonths
29153000
CY2019Q4 us-gaap Purchase Obligation Due In Second Year
PurchaseObligationDueInSecondYear
12638000
CY2019Q4 us-gaap Purchase Obligation Due In Third Year
PurchaseObligationDueInThirdYear
12264000
CY2019 us-gaap Repayments Of Notes Payable
RepaymentsOfNotesPayable
8130000
CY2018 us-gaap Repayments Of Notes Payable
RepaymentsOfNotesPayable
19596000
CY2017 us-gaap Repayments Of Notes Payable
RepaymentsOfNotesPayable
19976000
CY2019 us-gaap Research And Development Expense
ResearchAndDevelopmentExpense
9717000
CY2018 us-gaap Research And Development Expense
ResearchAndDevelopmentExpense
8748000
CY2017 us-gaap Research And Development Expense
ResearchAndDevelopmentExpense
7258000
CY2019Q4 us-gaap Retained Earnings Accumulated Deficit
RetainedEarningsAccumulatedDeficit
76208000
CY2018Q4 us-gaap Retained Earnings Accumulated Deficit
RetainedEarningsAccumulatedDeficit
60810000
CY2019 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
337145000
CY2018 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
346013000
CY2017 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
329421000
CY2019Q4 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
85946000
CY2019Q3 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
88129000
CY2019Q2 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
84117000
CY2019Q1 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
78953000
CY2018Q4 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
85612000
CY2018Q3 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
83519000
CY2018Q2 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
81087000
CY2018Q1 us-gaap Revenue From Contract With Customer Including Assessed Tax
RevenueFromContractWithCustomerIncludingAssessedTax
95795000
CY2019Q4 us-gaap Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
121921000
CY2019Q4 us-gaap Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
12886000
CY2019Q4 us-gaap Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
5456000
CY2019Q4 us-gaap Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
3389000
CY2019Q4 us-gaap Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
2090000
CY2019Q4 us-gaap Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
3098000
CY2019Q4 us-gaap Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
148840000
CY2019Q4 us-gaap Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1
RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
P1Y
CY2019Q4 us-gaap Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1
RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
P1Y
CY2019Q4 us-gaap Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1
RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
P1Y
CY2019Q4 us-gaap Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1
RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
P1Y
CY2019Q4 us-gaap Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1
RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
P1Y
CY2019Q4 us-gaap Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1
RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
P1Y
CY2019 us-gaap Right Of Use Asset Obtained In Exchange For Operating Lease Liability
RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
2665000
CY2017 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Exercises In Period Total Intrinsic Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
7600000
CY2019 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Expirations In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod
16335
CY2018 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Expirations In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod
CY2017 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Expirations In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod
CY2019 us-gaap Selling And Marketing Expense
SellingAndMarketingExpense
34270000
CY2018 us-gaap Selling And Marketing Expense
SellingAndMarketingExpense
33063000
CY2017 us-gaap Selling And Marketing Expense
SellingAndMarketingExpense
29423000
CY2019 us-gaap Share Based Compensation
ShareBasedCompensation
2876000
CY2018 us-gaap Share Based Compensation
ShareBasedCompensation
2574000
CY2017 us-gaap Share Based Compensation
ShareBasedCompensation
1457000
CY2019 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Dividend Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
0
CY2018 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Dividend Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
0
CY2017 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Dividend Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
0
CY2019 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Volatility Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
0.365
CY2018 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Volatility Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
0.379
CY2017 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Volatility Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
0.416
CY2019 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Risk Free Interest Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
0.02
CY2018 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Risk Free Interest Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
0.027
CY2017 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Risk Free Interest Rate
ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
0.018
CY2019Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Exercisable Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
356066
CY2018Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Exercisable Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
326937
CY2017Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Exercisable Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
243771
CY2019Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Exercisable Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
40.64
CY2018Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Exercisable Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
28.91
CY2017Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Exercisable Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
14.79
CY2019 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Exercises In Period Total Intrinsic Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
3900000
CY2018 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Exercises In Period Total Intrinsic Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
2900000
CY2019 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Forfeitures In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
31986
CY2018 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Forfeitures In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
50714
CY2017 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Forfeitures In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
18196
CY2019 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
180800
CY2018 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
163366
CY2017 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
370025
CY2019 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Weighted Average Grant Date Fair Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
20.20
CY2018 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Weighted Average Grant Date Fair Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
22.22
CY2017 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Weighted Average Grant Date Fair Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
20.08
CY2019Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Intrinsic Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
9224000
CY2018Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
702337
CY2017Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
653571
CY2016Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
474501
CY2019Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
754497
CY2018Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
43.80
CY2017Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
36.69
CY2016Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
12.67
CY2019Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
49.94
CY2019 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Exercises In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
16.90
CY2018 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Exercises In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
12.86
CY2017 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Exercises In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
7.88
CY2019 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Expirations In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice
47.51
CY2018 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Expirations In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice
CY2017 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Expirations In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice
CY2019 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Forfeitures In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
59.35
CY2017 us-gaap Stock Repurchased And Retired During Period Value
StockRepurchasedAndRetiredDuringPeriodValue
CY2019Q4 us-gaap Stockholders Equity
StockholdersEquity
94194000
CY2018 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Forfeitures In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
52.33
CY2017 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Forfeitures In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
37.70
CY2019 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Grants In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
60.56
CY2018 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Grants In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
62.80
CY2017 us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Grants In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
54.10
CY2019Q4 us-gaap Share Based Compensation Shares Authorized Under Stock Option Plans Exercise Price Range Number Of Exercisable Options
ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
356066
CY2019Q4 us-gaap Share Based Compensation Shares Authorized Under Stock Option Plans Exercise Price Range Number Of Outstanding Options
ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
754497
CY2019 us-gaap Sharebased Compensation Arrangement By Sharebased Payment Award Fair Value Assumptions Expected Term1
SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
P4Y182D
CY2018 us-gaap Sharebased Compensation Arrangement By Sharebased Payment Award Fair Value Assumptions Expected Term1
SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
P4Y175D
CY2017 us-gaap Sharebased Compensation Arrangement By Sharebased Payment Award Fair Value Assumptions Expected Term1
SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
P4Y200D
CY2019Q4 us-gaap Sharebased Compensation Arrangement By Sharebased Payment Award Options Exercisable Intrinsic Value1
SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1
7590000
CY2019Q4 us-gaap Sharebased Compensation Shares Authorized Under Stock Option Plans Exercise Price Range Exercisable Options Weighted Average Exercise Price1
SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
40.64
CY2019 us-gaap Sharebased Compensation Shares Authorized Under Stock Option Plans Exercise Price Range Exercisable Options Weighted Average Remaining Contractual Term2
SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageRemainingContractualTerm2
P3Y73D
CY2019Q4 us-gaap Sharebased Compensation Shares Authorized Under Stock Option Plans Exercise Price Range Outstanding Options Weighted Average Exercise Price Beginning Balance1
SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
49.94
CY2019 us-gaap Sharebased Compensation Shares Authorized Under Stock Option Plans Exercise Price Range Outstanding Options Weighted Average Remaining Contractual Term2
SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageRemainingContractualTerm2
P4Y146D
CY2019 us-gaap Shares Paid For Tax Withholding For Share Based Compensation
SharesPaidForTaxWithholdingForShareBasedCompensation
21332
CY2018 us-gaap Shares Paid For Tax Withholding For Share Based Compensation
SharesPaidForTaxWithholdingForShareBasedCompensation
19777
CY2017 us-gaap Shares Paid For Tax Withholding For Share Based Compensation
SharesPaidForTaxWithholdingForShareBasedCompensation
50454
CY2019 us-gaap Short Term Lease Cost
ShortTermLeaseCost
1040000
CY2019 us-gaap Stock Issued During Period Shares Stock Options Exercised
StockIssuedDuringPeriodSharesStockOptionsExercised
80319
CY2018 us-gaap Stock Issued During Period Shares Stock Options Exercised
StockIssuedDuringPeriodSharesStockOptionsExercised
63886
CY2017 us-gaap Stock Issued During Period Shares Stock Options Exercised
StockIssuedDuringPeriodSharesStockOptionsExercised
172759
CY2017 us-gaap Stock Issued During Period Value Stock Options Exercised
StockIssuedDuringPeriodValueStockOptionsExercised
222000
CY2018 us-gaap Stock Issued During Period Value Stock Options Exercised
StockIssuedDuringPeriodValueStockOptionsExercised
112000
CY2019 us-gaap Stock Issued During Period Value Stock Options Exercised
StockIssuedDuringPeriodValueStockOptionsExercised
395000
CY2019 us-gaap Stock Repurchased And Retired During Period Shares
StockRepurchasedAndRetiredDuringPeriodShares
101816
CY2018 us-gaap Stock Repurchased And Retired During Period Shares
StockRepurchasedAndRetiredDuringPeriodShares
CY2017 us-gaap Stock Repurchased And Retired During Period Shares
StockRepurchasedAndRetiredDuringPeriodShares
CY2019 us-gaap Stock Repurchased And Retired During Period Value
StockRepurchasedAndRetiredDuringPeriodValue
4986000
CY2018 us-gaap Stock Repurchased And Retired During Period Value
StockRepurchasedAndRetiredDuringPeriodValue
CY2018Q4 us-gaap Stockholders Equity
StockholdersEquity
79776000
CY2016Q4 us-gaap Stockholders Equity
StockholdersEquity
37818000
CY2017Q4 us-gaap Stockholders Equity
StockholdersEquity
60211000
CY2019 us-gaap Straight Line Rent
StraightLineRent
CY2018 us-gaap Straight Line Rent
StraightLineRent
14000
CY2017 us-gaap Straight Line Rent
StraightLineRent
-6000
CY2019 us-gaap Tangible Asset Impairment Charges
TangibleAssetImpairmentCharges
142000
CY2018 us-gaap Tangible Asset Impairment Charges
TangibleAssetImpairmentCharges
CY2017 us-gaap Tangible Asset Impairment Charges
TangibleAssetImpairmentCharges
17000
CY2017 us-gaap Temporary Equity Accretion To Redemption Value
TemporaryEquityAccretionToRedemptionValue
51000
CY2018 us-gaap Temporary Equity Accretion To Redemption Value
TemporaryEquityAccretionToRedemptionValue
64000
CY2019 us-gaap Unrealized Gain Loss On Derivatives
UnrealizedGainLossOnDerivatives
313000
CY2018 us-gaap Unrealized Gain Loss On Derivatives
UnrealizedGainLossOnDerivatives
-207000
CY2017 us-gaap Unrealized Gain Loss On Derivatives
UnrealizedGainLossOnDerivatives
-17000
CY2017Q4 us-gaap Unrecognized Tax Benefits
UnrecognizedTaxBenefits
15000
CY2018Q4 us-gaap Unrecognized Tax Benefits
UnrecognizedTaxBenefits
CY2019Q4 us-gaap Unrecognized Tax Benefits
UnrecognizedTaxBenefits
CY2019Q4 us-gaap Unrecognized Tax Benefits Income Tax Penalties And Interest Accrued
UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued
0
CY2018Q4 us-gaap Unrecognized Tax Benefits Income Tax Penalties And Interest Accrued
UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued
0
CY2019 us-gaap Unrecognized Tax Benefits Period Increase Decrease
UnrecognizedTaxBenefitsPeriodIncreaseDecrease
CY2018 us-gaap Unrecognized Tax Benefits Period Increase Decrease
UnrecognizedTaxBenefitsPeriodIncreaseDecrease
-15000
CY2019 us-gaap Use Of Estimates
UseOfEstimates
<div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style="display: inline; font-family: times new roman; font-size: 10pt"><div style=" font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify; text-indent: 36pt;"><div style="display: inline; font-style: italic;">(b) Use of estimates</div></div> <div style=" font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify; text-indent: 36pt;">&nbsp;</div> <div style=" font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify; text-indent: 36pt;">The preparation of the consolidated financial statements in accordance with U.S.&nbsp;GAAP requires management to make estimates and assumptions that affect the reported amounts of assets, liabilities, revenues and expenses, and related disclosure of contingent assets and liabilities. On an on-going basis, management evaluates its estimates, including those related to amounts recognized for carrying values of revenues, bad debts, inventory obsolescence which requires estimates of sales forecasts and other marketplace considerations, internal use software which requires estimates of whether the costs incurred meet the criteria for capitalization based on the stage of the projects, goodwill and intangible assets which require estimates of future cash flows and discount rates, lease liability which requires estimates of incremental borrowing rate and the expectation of exercising lease renewal periods,&nbsp;income taxes, contingencies and litigation, and estimates of credit spreads for determination of the fair value of derivative instruments. Management bases its estimates on historical experience and on various other assumptions that are believed to be reasonable under the circumstances at the time they are made. Under different assumptions or conditions, the actual results will differ, potentially materially, from those previously estimated. Many of the conditions impacting these assumptions and estimates are outside of the Company&#x2019;s control.</div></div></div></div></div></div></div></div></div></div></div></div></div>
CY2019 us-gaap Variable Lease Cost
VariableLeaseCost
657000
CY2019 us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
10772812
CY2018 us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
10794170
CY2017 us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
10793622
CY2019 us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
10623799
CY2018 us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
10604722
CY2017 us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
10537356

Files In Submission

Name View Source Status
0001437749-20-004330-index-headers.html Edgar Link pending
0001437749-20-004330-index.html Edgar Link pending
0001437749-20-004330.txt Edgar Link pending
0001437749-20-004330-xbrl.zip Edgar Link pending
a2.jpg Edgar Link pending
a3.jpg Edgar Link pending
ex_167713.htm Edgar Link pending
ex_167714.htm Edgar Link pending
ex_167715.htm Edgar Link pending
ex_167716.htm Edgar Link pending
ex_167717.htm Edgar Link pending
ex_167718.htm Edgar Link pending
ex_167719.htm Edgar Link pending
ex_174032.htm Edgar Link pending
FilingSummary.xml Edgar Link unprocessable
Financial_Report.xlsx Edgar Link pending
R1.htm Edgar Link pending
R10.htm Edgar Link pending
R100.htm Edgar Link pending
R101.htm Edgar Link pending
R102.htm Edgar Link pending
R103.htm Edgar Link pending
R104.htm Edgar Link pending
R105.htm Edgar Link pending
R106.htm Edgar Link pending
R107.htm Edgar Link pending
R108.htm Edgar Link pending
R11.htm Edgar Link pending
R12.htm Edgar Link pending
R13.htm Edgar Link pending
R14.htm Edgar Link pending
R15.htm Edgar Link pending
R16.htm Edgar Link pending
R17.htm Edgar Link pending
R18.htm Edgar Link pending
R19.htm Edgar Link pending
R2.htm Edgar Link pending
R20.htm Edgar Link pending
R21.htm Edgar Link pending
R22.htm Edgar Link pending
R23.htm Edgar Link pending
R24.htm Edgar Link pending
R25.htm Edgar Link pending
R26.htm Edgar Link pending
R27.htm Edgar Link pending
R28.htm Edgar Link pending
R29.htm Edgar Link pending
R3.htm Edgar Link pending
R30.htm Edgar Link pending
R31.htm Edgar Link pending
R32.htm Edgar Link pending
R33.htm Edgar Link pending
R34.htm Edgar Link pending
R35.htm Edgar Link pending
R36.htm Edgar Link pending
R37.htm Edgar Link pending
R38.htm Edgar Link pending
R39.htm Edgar Link pending
R4.htm Edgar Link pending
R40.htm Edgar Link pending
R41.htm Edgar Link pending
R42.htm Edgar Link pending
R43.htm Edgar Link pending
R44.htm Edgar Link pending
R45.htm Edgar Link pending
R46.htm Edgar Link pending
R47.htm Edgar Link pending
R48.htm Edgar Link pending
R49.htm Edgar Link pending
R5.htm Edgar Link pending
R50.htm Edgar Link pending
R51.htm Edgar Link pending
R52.htm Edgar Link pending
R53.htm Edgar Link pending
R54.htm Edgar Link pending
R55.htm Edgar Link pending
R56.htm Edgar Link pending
R57.htm Edgar Link pending
R58.htm Edgar Link pending
R59.htm Edgar Link pending
R6.htm Edgar Link pending
R60.htm Edgar Link pending
R61.htm Edgar Link pending
R62.htm Edgar Link pending
R63.htm Edgar Link pending
R64.htm Edgar Link pending
R65.htm Edgar Link pending
R66.htm Edgar Link pending
R67.htm Edgar Link pending
R68.htm Edgar Link pending
R69.htm Edgar Link pending
R7.htm Edgar Link pending
R70.htm Edgar Link pending
R71.htm Edgar Link pending
R72.htm Edgar Link pending
R73.htm Edgar Link pending
R74.htm Edgar Link pending
R75.htm Edgar Link pending
R76.htm Edgar Link pending
R77.htm Edgar Link pending
R78.htm Edgar Link pending
R79.htm Edgar Link pending
R8.htm Edgar Link pending
R80.htm Edgar Link pending
R81.htm Edgar Link pending
R82.htm Edgar Link pending
R83.htm Edgar Link pending
R84.htm Edgar Link pending
R85.htm Edgar Link pending
R86.htm Edgar Link pending
R87.htm Edgar Link pending
R88.htm Edgar Link pending
R89.htm Edgar Link pending
R9.htm Edgar Link pending
R90.htm Edgar Link pending
R91.htm Edgar Link pending
R92.htm Edgar Link pending
R93.htm Edgar Link pending
R94.htm Edgar Link pending
R95.htm Edgar Link pending
R96.htm Edgar Link pending
R97.htm Edgar Link pending
R98.htm Edgar Link pending
R99.htm Edgar Link pending
report.css Edgar Link pending
Show.js Edgar Link pending
tcx-20191231.xml Edgar Link completed
tcx-20191231.xsd Edgar Link pending
tcx-20191231_cal.xml Edgar Link unprocessable
tcx-20191231_def.xml Edgar Link unprocessable
tcx-20191231_lab.xml Edgar Link unprocessable
tcx-20191231_pre.xml Edgar Link unprocessable
tcx20191231_10k.htm Edgar Link pending
tcxline.jpg Edgar Link pending