XML 32 R19.htm IDEA: XBRL DOCUMENT v3.20.2
Revenue
9 Months Ended
Sep. 30, 2020
Revenue [Abstract]  
Revenue
Note 12 - Revenue

We primarily generate revenue through three distinct revenue streams: (1) System Design and Build ("SDB"), (2) Software and (3) Training and Consulting Services across our Performance and NITC segments. We recognize revenue from SDB and software contracts mainly through our Performance segment. We recognize training and consulting service contracts through both segments.

The following table represents a disaggregation of revenue by type of goods or services for three and nine months ended September 30, 2020 and 2019, along with the reporting segment for each category:

 
Three months ended
  
Nine months ended
 
(in thousands)
 
September 30, 2020
  
September 30, 2019
  
September 30, 2020
  
September 30, 2019
 
Performance segment
            
SDB
 
$
2,473
  
$
4,435
  
$
9,535
  
$
16,472
 
Software
  
942
   
786
   
2,575
   
2,170
 
Training and consulting
  
3,842
   
6,196
   
13,130
   
17,975
 
                 
NITC segment
                
Training and consulting
  
5,665
   
8,614
   
19,727
   
29,066
 
                 
Total revenue
 
$
12,922
  
$
20,031
  
$
44,967
  
$
65,683
 

SDB contracts are typically fixed-priced, and we receive payments based on a billing schedule established in our contracts. We generally have two main performance obligations: (1) the training simulator build and (2) the Post Contract Support ("PCS") period. Fees for PCS are normally paid in advance of the related service period.

The training simulator build generally includes hardware, software and labor. We recognize revenue for the training simulator build over the construction and installation period, using the cost-to-cost input method. In applying the cost-to-cost input method, we use the actual costs incurred to date, relative to the total estimated costs, to measure the work progress towards the completion of the performance obligation and recognize revenue accordingly. Estimated contract costs are reviewed and revised periodically during the contract period, and the cumulative effect of any change in estimates is recognized in the period in which the change is identified. Estimated losses are recognized in the period such losses are identified. Uncertainties inherent in the performance of contracts include labor availability and productivity, material costs, change order scope and pricing, software modification and customer acceptance issues. The reliability of these cost estimates is critical to our revenue recognition as a significant change in the estimates can cause our revenue and related margins to change significantly from the amounts estimated in the early stages of the project.

The transaction price for Software contracts is generally fixed, and we recognize revenue upon delivery of the software, with fees due in advance or shortly after delivery of the software.

We recognize Training and Consulting Services revenue as services are performed and bill our customers for services that we have provided on a regular basis (i.e. weekly, biweekly or monthly) and in time with revenue recognition.

Contract liability, which we classify as billing-in-excess of revenue earned, relates to payments received in advance of performance under the contract. Contract liabilities are recognized as revenue as performance obligations are satisfied.

The following table reflects revenue recognized in the reporting periods presented that was included in contract liabilities from contracts with customers as of the beginning of the periods presented:

(in thousands)
Three months ended
 
Nine months ended
 
 
September 30, 2020
 
September 30, 2019
 
September 30, 2020
 
September 30, 2019
 
Revenue recognized in the period from amounts included in Billings-in-Excess of Revenue Earned at the beginning of the period
 
$
1,520
  
$
762
  
$
6,221
  
$
8,615