for the years ended december 31 , 2019 , 2018 and 2017 , we generated revenues of $ 279.1 million , $ 248.2 million and $ 220.1 million , respectively . our fiscal quarter ended december 31 , 2019 represented our 76th consecutive quarter of increased revenues . recurring revenues from recurring revenue customers accounted for 94 % , 93 % and 93 % of our total revenues for the years ended december 31 , 2019 , 2018 and 2017 , respectively . our revenues are not concentrated with any customer , as our largest customer represented less than 1 % of total revenues for the years ended december 31 , 2019 , 2018 and 2017. key financial terms and metrics sources of revenues trading partner community . our community solution provides communication programs based on our best practices . these programs enable organizations , from large and small retailers and suppliers to emerging providers of value-added products and services , to establish trading partner relationships with new trading partners to expand their businesses . trading partner fulfillment . our fulfillment solution provides fulfillment automation and replaces or augments an organization 's existing trading partner electronic communication infrastructure , enabling suppliers to have visibility into the journey of an order and comply with retailers ' rule books and enabling the electronic exchange of information among numerous trading partners through various protocols . trading partner assortment . today 's retail marketplace requires the management of numerous individual attributes associated with each item a retailer or supplier sells today . this information can include digital images/video , customer facing descriptions and measurements , and warehouse information . our assortment product provides robust , extensible management of this information , enabling accurate orders and rapid fulfillment . trading partner analytics . our analytics solution consists of data analytics applications that enable our customers to improve their visibility across , and analysis of , their supply chains . when focused on point-of-sale data , for example , retailers and suppliers can ensure inventory is located where demand is highest . retailers improve their visibility into supplier performance and their understanding of product sell-through . trading partner sourcing . through retail universe , our social network for the retail industry , retailers can source providers of new items , suppliers can connect with new retailers and the broader retailing community can make connections to expand their business networks and grow . other trading partner solutions . we provide a number of peripheral solutions such as barcode labeling , planogram services and our scan and pack application , which helps trading partners process information to streamline the picking and packaging process . 34 cost of revenues and operating expenses cost of revenues . cost of revenues consist primarily of personnel costs for our customer success and implementation teams , customer support personnel and application support personnel . cost of revenues also includes our cost of network services , which is primarily data center costs for the locations where we keep the equipment that serves our customers , cloud provider services , and connectivity costs that facilitate electronic data transmission between our customers and their trading partners . sales and marketing expenses . sales and marketing expenses consist primarily of personnel costs for our sales , marketing and product management teams , commissions earned by our sales personnel and marketing costs . research and development expenses . research and development expenses consist primarily of personnel costs for development of new and maintenance of existing solutions , net of amounts capitalized as developed software . our research and development group is also responsible for enhancing existing solutions and applications , internal tools , and developing new information maps that integrate our customers to their trading partners in compliance with those trading partners ' requirements . general and administrative expenses . general and administrative expenses consist primarily of personnel costs for finance , human resources and internal information technology support , as well as legal , accounting and other fees , such as credit card processing fees . overhead allocation . we allocate overhead expenses such as rent , certain employee benefit costs , office supplies and depreciation of general office assets to cost of revenues and operating expenses categories based on headcount . other metrics recurring revenue customers . as of december 31 , 2019 , we had approximately 31,000 customers with contracts to pay us monthly fees , which we refer to as recurring revenue customers . we report recurring revenue customers as of the end of a period . a small portion of our recurring revenue customers consist of separate units within a larger organization . we treat each of these units , which may include divisions , departments , affiliates and franchises , as distinct customers . average recurring revenues per recurring revenue customer . we calculate average recurring revenues per recurring revenue customer , which we also refer to as wallet share , by dividing the recurring revenues from recurring revenue customers for the period by the average of the beginning and ending number of recurring revenue customers for the period . for interim periods , we annualize this number by multiplying the quotient calculated above by the quotient of 12 divided by the number of months in the period . we anticipate that average recurring revenues per recurring revenue customer will continue to increase as we increase the number of solutions we offer and increase the penetration of those solutions across our customer base . non-gaap financial measures . to supplement our financial statements , we also provide investors with adjusted ebitda and non-gaap income per share , both of which are non-gaap financial measures . story_separator_special_tag recurring revenues from recurring revenue customers increased 14 % in 2019 , as compared to 2018 , and accounted for 94 % of our total revenues in 2019 , as compared to 93 % in 2018. we anticipate that the number of recurring revenue customers and wallet share will continue to increase as we increase the number of solutions we offer and increase the penetration of those solutions across our customer base . cost of revenues . the increase in cost of revenues was primarily due to a $ 7.1 million increase in personnel-related costs and $ 0.7 million in stock-based compensation expense , driven by increased salaries and benefits due to business growth and by increased headcount , consulting , and contract labor . as we continued to invest in the infrastructure supporting our cloud-based platform , depreciation expense increased by $ 2.1 million . sales and marketing expenses . the decrease in sales and marketing expenses was primarily due to a decrease of $ 1.5 million in personnel-related costs and a decrease of $ 0.8 million in variable compensation earned by sales personnel and partner referrals . the decrease was offset by an increase of $ 0.3 million in promotional expenses , an increase of $ 0.3 million in stock-based compensation , and an increase of $ 0.2 million in software subscriptions . research and development expenses . the increase in research and development expenses was primarily due to a $ 4.6 million increase in personnel-related costs and a $ 1.1 million increase in stock-based compensation expense driven by continued business growth which led to increased headcount and increases to expenses for consulting , contract labor , salaries , benefits , and stock-based compensation . 37 general and administrative expenses . the increase in general and administrative expenses was primarily due to continued business growth , which drove a $ 1.1 million increase in personnel-related costs ( headcount , salaries and benefits ) and a $ 2.3 million increase in software subscriptions , credit card fees , and bad debt expense , offset by a decrease of $ 0.7 million in charitable contributions . amortization of intangible assets . the increase in amortization of intangible assets was driven by the amortization of the acquired intangible assets related to ediadmin and covalentworks in the fourth quarter of 2018 and to mapadoc in the third quarter of 2019. other income ( expense ) , net . the increase in interest income , net , other income ( expense ) , net , and change in earn-out liability was primarily due to increased interest income from investments , returned escrow shares related to the acquisition of toolbox , and the decrease in the fair value of the earn-out liability , offset by impairment of internally developed software . the change in fair value of the earn-out liability was driven by an adjustment to the fair value of the ediadmin earnout liability due to actual and estimated revenue at the earn-out measurement dates , december 31 , 2019 and december 31 , 2020. income tax expense . the increase in income tax expense was primarily due to the increase in pre-tax net income . see note n to our consolidated financial statements , included in this annual report on form 10-k , for additional information regarding our income taxes . adjusted ebitda . adjusted ebitda , which is a non-gaap measure of financial performance , consists of net income adjusted for depreciation and amortization , interest expense , interest income , income tax expense , stock-based compensation expense , and other adjustments as necessary for a fair presentation . other adjustments included the impact of an earn-out adjustment related to the ediadmin acquisition in 2019 and 2018 , returned escrow shares in 2019 related to the acquisition of toolbox , depreciation on asset retirements and disposals in 2019 , and an impairment of internally developed software in 2019. the following table provides a reconciliation of net income to adjusted ebitda ( in thousands ) : replace_table_token_10_th non-gaap income per share . non-gaap income per share , which is also a non-gaap measure of financial performance , consists of net income plus stock-based compensation expense , amortization expense related to intangible assets , and other adjustments as necessary for a fair presentation , divided by the weighted average number of shares of common stock outstanding during each period . other adjustments included the impact of the fair value adjustment for the ediadmin share-based earn-out liability in 2019 and 2018 , returned escrow shares in 2019 related to the acquisition of toolbox , depreciation on asset retirements and disposals in 2019 , and an impairment of internally developed software in 2019. to quantify the tax effects , we recalculated income tax expense excluding the direct book and tax effects of the specific items constituting the non-gaap adjustments . the difference between this recalculated income tax expense and gaap income tax expense is presented as the income tax effect of the non-gaap adjustments . 38 the following table provides a reconciliation of net income to non-gaap income per share ( in thousands , except per share amounts ) : replace_table_token_11_th shares and per share data have been adjusted for all periods presented to reflect a two-for-one stock split effective august 22 , 2019. year ended december 31 , 2018 compared to year ended december 31 , 2017 the discussion of our results from operations for the fiscal year ended december 31 , 2018 compared to the fiscal year ended december 31 , 2017 can be found in part ii , item 7 , “ management 's discussion and analysis of financial condition and results of operations ” in the company 's annual report on form 10-k/a for the year ended december 31 , 2018. story_separator_special_tag style= `` margin-top:6pt ; margin-bottom:0pt ; font-weight : normal ; font-style : normal ; text-transform : none ; font-variant : normal ; font-family : 'times new roman ' ; font-size:10pt

liquidity and capital resources at december 31 , 2019 , our principal sources of liquidity were cash and cash equivalents , certificates of deposit , and marketable securities totaling $ 213.5 million , and accounts receivable , net of allowance for doubtful accounts , of $ 31.5 million , compared to cash and cash equivalents , certificates of deposit , and marketable securities totaling $ 178.4 million , and accounts receivable , net of allowance for doubtful accounts , of $ 27.5 million at december 31 , 2018. certificates of deposit and marketable securities are invested in accordance with our investment policy , with a goal of maintaining liquidity and capital preservation . our cash equivalents and marketable securities are held in highly liquid money market funds , commercial paper , federal agency securities and corporate debt securities . the table below summarizes the activity within the consolidated statement of cash flows : replace_table_token_12_th the discussion of our liquidity and capital resources for the fiscal year ended december 31 , 2018 compared to the fiscal year ended december 31 , 2017 can be found in part ii , item 7 , “ management 's discussion and analysis of financial condition and results of operations ” in the company 's annual report on form 10-k/a for the year ended december 31 , 2018. net cash flows from operating activities the increase in operating cash flows was primarily driven by continued business growth , which resulted in increased net income .


 Write a concise suspicious activity report of the following text delimited by triple backquotes. Return your response as a formal report which covers the key points highlighting the location,dates,entity names and account holder information in chronological order of the text.
     ```liquidity and capital resources at december 31 , 2019 , our principal sources of liquidity were cash and cash equivalents , certificates of deposit , and marketable securities totaling $ 213.5 million , and accounts receivable , net of allowance for doubtful accounts , of $ 31.5 million , compared to cash and cash equivalents , certificates of deposit , and marketable securities totaling $ 178.4 million , and accounts receivable , net of allowance for doubtful accounts , of $ 27.5 million at december 31 , 2018. certificates of deposit and marketable securities are invested in accordance with our investment policy , with a goal of maintaining liquidity and capital preservation . our cash equivalents and marketable securities are held in highly liquid money market funds , commercial paper , federal agency securities and corporate debt securities . the table below summarizes the activity within the consolidated statement of cash flows : replace_table_token_12_th the discussion of our liquidity and capital resources for the fiscal year ended december 31 , 2018 compared to the fiscal year ended december 31 , 2017 can be found in part ii , item 7 , “ management 's discussion and analysis of financial condition and results of operations ” in the company 's annual report on form 10-k/a for the year ended december 31 , 2018. net cash flows from operating activities the increase in operating cash flows was primarily driven by continued business growth , which resulted in increased net income .
```    
 Suspicious Activity Report : for the years ended december 31 , 2019 , 2018 and 2017 , we generated revenues of $ 279.1 million , $ 248.2 million and $ 220.1 million , respectively . our fiscal quarter ended december 31 , 2019 represented our 76th consecutive quarter of increased revenues . recurring revenues from recurring revenue customers accounted for 94 % , 93 % and 93 % of our total revenues for the years ended december 31 , 2019 , 2018 and 2017 , respectively . our revenues are not concentrated with any customer , as our largest customer represented less than 1 % of total revenues for the years ended december 31 , 2019 , 2018 and 2017. key financial terms and metrics sources of revenues trading partner community . our community solution provides communication programs based on our best practices . these programs enable organizations , from large and small retailers and suppliers to emerging providers of value-added products and services , to establish trading partner relationships with new trading partners to expand their businesses . trading partner fulfillment . our fulfillment solution provides fulfillment automation and replaces or augments an organization 's existing trading partner electronic communication infrastructure , enabling suppliers to have visibility into the journey of an order and comply with retailers ' rule books and enabling the electronic exchange of information among numerous trading partners through various protocols . trading partner assortment . today 's retail marketplace requires the management of numerous individual attributes associated with each item a retailer or supplier sells today . this information can include digital images/video , customer facing descriptions and measurements , and warehouse information . our assortment product provides robust , extensible management of this information , enabling accurate orders and rapid fulfillment . trading partner analytics . our analytics solution consists of data analytics applications that enable our customers to improve their visibility across , and analysis of , their supply chains . when focused on point-of-sale data , for example , retailers and suppliers can ensure inventory is located where demand is highest . retailers improve their visibility into supplier performance and their understanding of product sell-through . trading partner sourcing . through retail universe , our social network for the retail industry , retailers can source providers of new items , suppliers can connect with new retailers and the broader retailing community can make connections to expand their business networks and grow . other trading partner solutions . we provide a number of peripheral solutions such as barcode labeling , planogram services and our scan and pack application , which helps trading partners process information to streamline the picking and packaging process . 34 cost of revenues and operating expenses cost of revenues . cost of revenues consist primarily of personnel costs for our customer success and implementation teams , customer support personnel and application support personnel . cost of revenues also includes our cost of network services , which is primarily data center costs for the locations where we keep the equipment that serves our customers , cloud provider services , and connectivity costs that facilitate electronic data transmission between our customers and their trading partners . sales and marketing expenses . sales and marketing expenses consist primarily of personnel costs for our sales , marketing and product management teams , commissions earned by our sales personnel and marketing costs . research and development expenses . research and development expenses consist primarily of personnel costs for development of new and maintenance of existing solutions , net of amounts capitalized as developed software . our research and development group is also responsible for enhancing existing solutions and applications , internal tools , and developing new information maps that integrate our customers to their trading partners in compliance with those trading partners ' requirements . general and administrative expenses . general and administrative expenses consist primarily of personnel costs for finance , human resources and internal information technology support , as well as legal , accounting and other fees , such as credit card processing fees . overhead allocation . we allocate overhead expenses such as rent , certain employee benefit costs , office supplies and depreciation of general office assets to cost of revenues and operating expenses categories based on headcount . other metrics recurring revenue customers . as of december 31 , 2019 , we had approximately 31,000 customers with contracts to pay us monthly fees , which we refer to as recurring revenue customers . we report recurring revenue customers as of the end of a period . a small portion of our recurring revenue customers consist of separate units within a larger organization . we treat each of these units , which may include divisions , departments , affiliates and franchises , as distinct customers . average recurring revenues per recurring revenue customer . we calculate average recurring revenues per recurring revenue customer , which we also refer to as wallet share , by dividing the recurring revenues from recurring revenue customers for the period by the average of the beginning and ending number of recurring revenue customers for the period . for interim periods , we annualize this number by multiplying the quotient calculated above by the quotient of 12 divided by the number of months in the period . we anticipate that average recurring revenues per recurring revenue customer will continue to increase as we increase the number of solutions we offer and increase the penetration of those solutions across our customer base . non-gaap financial measures . to supplement our financial statements , we also provide investors with adjusted ebitda and non-gaap income per share , both of which are non-gaap financial measures . story_separator_special_tag recurring revenues from recurring revenue customers increased 14 % in 2019 , as compared to 2018 , and accounted for 94 % of our total revenues in 2019 , as compared to 93 % in 2018. we anticipate that the number of recurring revenue customers and wallet share will continue to increase as we increase the number of solutions we offer and increase the penetration of those solutions across our customer base . cost of revenues . the increase in cost of revenues was primarily due to a $ 7.1 million increase in personnel-related costs and $ 0.7 million in stock-based compensation expense , driven by increased salaries and benefits due to business growth and by increased headcount , consulting , and contract labor . as we continued to invest in the infrastructure supporting our cloud-based platform , depreciation expense increased by $ 2.1 million . sales and marketing expenses . the decrease in sales and marketing expenses was primarily due to a decrease of $ 1.5 million in personnel-related costs and a decrease of $ 0.8 million in variable compensation earned by sales personnel and partner referrals . the decrease was offset by an increase of $ 0.3 million in promotional expenses , an increase of $ 0.3 million in stock-based compensation , and an increase of $ 0.2 million in software subscriptions . research and development expenses . the increase in research and development expenses was primarily due to a $ 4.6 million increase in personnel-related costs and a $ 1.1 million increase in stock-based compensation expense driven by continued business growth which led to increased headcount and increases to expenses for consulting , contract labor , salaries , benefits , and stock-based compensation . 37 general and administrative expenses . the increase in general and administrative expenses was primarily due to continued business growth , which drove a $ 1.1 million increase in personnel-related costs ( headcount , salaries and benefits ) and a $ 2.3 million increase in software subscriptions , credit card fees , and bad debt expense , offset by a decrease of $ 0.7 million in charitable contributions . amortization of intangible assets . the increase in amortization of intangible assets was driven by the amortization of the acquired intangible assets related to ediadmin and covalentworks in the fourth quarter of 2018 and to mapadoc in the third quarter of 2019. other income ( expense ) , net . the increase in interest income , net , other income ( expense ) , net , and change in earn-out liability was primarily due to increased interest income from investments , returned escrow shares related to the acquisition of toolbox , and the decrease in the fair value of the earn-out liability , offset by impairment of internally developed software . the change in fair value of the earn-out liability was driven by an adjustment to the fair value of the ediadmin earnout liability due to actual and estimated revenue at the earn-out measurement dates , december 31 , 2019 and december 31 , 2020. income tax expense . the increase in income tax expense was primarily due to the increase in pre-tax net income . see note n to our consolidated financial statements , included in this annual report on form 10-k , for additional information regarding our income taxes . adjusted ebitda . adjusted ebitda , which is a non-gaap measure of financial performance , consists of net income adjusted for depreciation and amortization , interest expense , interest income , income tax expense , stock-based compensation expense , and other adjustments as necessary for a fair presentation . other adjustments included the impact of an earn-out adjustment related to the ediadmin acquisition in 2019 and 2018 , returned escrow shares in 2019 related to the acquisition of toolbox , depreciation on asset retirements and disposals in 2019 , and an impairment of internally developed software in 2019. the following table provides a reconciliation of net income to adjusted ebitda ( in thousands ) : replace_table_token_10_th non-gaap income per share . non-gaap income per share , which is also a non-gaap measure of financial performance , consists of net income plus stock-based compensation expense , amortization expense related to intangible assets , and other adjustments as necessary for a fair presentation , divided by the weighted average number of shares of common stock outstanding during each period . other adjustments included the impact of the fair value adjustment for the ediadmin share-based earn-out liability in 2019 and 2018 , returned escrow shares in 2019 related to the acquisition of toolbox , depreciation on asset retirements and disposals in 2019 , and an impairment of internally developed software in 2019. to quantify the tax effects , we recalculated income tax expense excluding the direct book and tax effects of the specific items constituting the non-gaap adjustments . the difference between this recalculated income tax expense and gaap income tax expense is presented as the income tax effect of the non-gaap adjustments . 38 the following table provides a reconciliation of net income to non-gaap income per share ( in thousands , except per share amounts ) : replace_table_token_11_th shares and per share data have been adjusted for all periods presented to reflect a two-for-one stock split effective august 22 , 2019. year ended december 31 , 2018 compared to year ended december 31 , 2017 the discussion of our results from operations for the fiscal year ended december 31 , 2018 compared to the fiscal year ended december 31 , 2017 can be found in part ii , item 7 , “ management 's discussion and analysis of financial condition and results of operations ” in the company 's annual report on form 10-k/a for the year ended december 31 , 2018. story_separator_special_tag style= `` margin-top:6pt ; margin-bottom:0pt ; font-weight : normal ; font-style : normal ; text-transform : none ; font-variant : normal ; font-family : 'times new roman ' ; font-size:10pt

