Revenue recognition We recognize revenue when control of the promised goods or services is transferred to our customers, in an amount that reflects the consideration that we expect to receive in exchange for those goods or services. We generate all of our revenue from contracts with customers. Embedded operating system software We sell embedded operating system software licenses based upon a customer purchase order, shipping a certificate of authenticity (COA) to satisfy this single performance obligation. These shipments are also subject to limited return rights; historically, returns have averaged less than one-quarter of one percent. In accordance with ASC Topic 606, Revenue from Contracts with Customers, (Topic 606), we recognize revenue from third-party products at the time of shipment when the customer accepts control of the COA. Proprietary software We sell our proprietary software products to customers under a contract or by purchase order. Our DataV software contracts generally include professional services, a perpetual or term license and support and maintenance. In contracts with multiple performance obligations, we identify each performance obligation and evaluate whether the performance obligations are distinct within the context of the contract at contract inception. Performance obligations that are not distinct at contract inception are combined. Contracts that include software customization may result in the combination of the customization services with the software license as one distinct performance obligation. The transaction price is generally in the form of a fixed fee at contract inception. Certain DataV contracts also include variable consideration in the form of royalties earned when customers meet contractual volume thresholds. We allocate the transaction price to each distinct performance obligation based on the estimated standalone selling price for each performance obligation. We then look to how control of the software transfers to the customer in order to determine the timing of revenue recognition. In contracts that include customer acceptance, we recognize revenue when we have delivered the software and received customer acceptance. We recognize revenue from support and maintenance over the service delivery period. We recognize revenue from royalties in the period of usage. Our software products, other than for DataV products, generally do not include customization or modification services and are sold in the form of term licenses. These software licenses represent one distinct performance obligation. Revenue is recognized when the software is delivered to the customer. Professional services We enter into contracts for professional services, including for our IoT-related service offerings, that include software development and customization. We identify each performance obligation in our professional services contracts at contract inception. The contracts generally include project deliverables specified by each customer. The performance obligations in the contracts are generally combined into one deliverable. The contract pricing is either at stated billing rates per service hour and material costs or at a fixed amount. Services provided under professional engineering contracts generally result in the transfer of control of the applicable deliverable over time. We recognize revenue on service contracts based on time and materials as we have the right to invoice. We recognize revenue on fixed fee contracts on the proportion of labor hours expended (under Topic 606, the input method) to the total hours expected to complete the contract performance obligation. Certain professional service contracts include substantive customer acceptance provisions; in which case we recognize revenue upon customer acceptance. The determination of the total labor hours expected to complete the performance obligations on fixed fee contracts involves significant judgment. We incorporate revisions to hour and cost estimates when the causal facts become known. In certain situations, when it is impractical for us to reasonably measure the outcome of a performance obligation, and where we anticipate that we will not incur a loss, an adjusted cost-based input method is used for revenue recognition. Equal amounts of revenue and cost are recognized during the contract period, and profit is recognized when the project is completed and accepted.