Note 11 - Share-based Compensation (Tables)
|
12 Months Ended |
Dec. 31, 2019 |
Notes Tables |
|
Share-based Payment Arrangement, Restricted Stock Unit, Activity [Table Text Block] |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unvested at December 31, 2017 | | | 12,459 | | | $ | 2.61 | | | | | | Granted | | | 125,000 | | | | 1.37 | | | | | | Vested | | | (4,116 | ) | | | 2.60 | | | $ | 13,749 | | Vested shares forgone to satisfy minimum statutory withholding | | | (2,134 | ) | | | 2.60 | | | $ | 4,695 | | Forfeitures | | | (1,626 | ) | | | 2.60 | | | | | | | | | | | | | | | | | | | Unvested at December 31, 2018 | | | 129,583 | | | | 1.42 | | | | | | Granted | | | 26,000 | | | | 7.04 | | | | | | Vested | | | (58,314 | ) | | | 3.17 | | | $ | 712,969 | | Vested shares forgone to satisfy minimum statutory withholding | | | (71,269 | ) | | | 3.17 | | | $ | 422,779 | | Forfeitures | | | - | | | | - | | | | | | Unvested at December 31, 2019 | | | 26,000 | | | $ | 7.04 | | | | | |
|
Schedule of Share-based Compensation, Employee Stock Purchase Plan, Activity [Table Text Block] |
| | | | | | | Compensation expense | | $ | 43,030 | | | $ | 33,874 | | Shares of stock sold to employees | | | 33,742 | | | | 43,433 | | Weighted average fair value per ESPP award | | $ | 3.94 | | | $ | 2.45 | |
|
Schedule of Nonvested Share Activity [Table Text Block] |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2017 | | | 1,962,500 | | | $ | 2.44 | | | | 3.18 | | | $ | - | | | | | | | | | | | | | | | | | | | Granted | | | 825,000 | | | $ | 3.14 | | | | 3.64 | | | | | | Exercised | | | (10,953 | ) | | | 2.15 | | | | | | | | 12,159 | | Exercised shares forgone to satisfy minimum statutory withholding | | | (5,134 | ) | | | 2.15 | | | | | | | | | | Cashless exercise | | | (33,079 | ) | | | 2.15 | | | | | | | | | | Forfeited | | | (514,167 | ) | | | 2.62 | | | | | | | | | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2018 | | | 2,224,167 | | | $ | 2.67 | | | | 3.01 | | | $ | 1,719,584 | | | | | | | | | | | | | | | | | | | Exercisable at December 31, 2018 | | | 1,101,910 | | | $ | 2.52 | | | | | | | | | | | | | | | | | | | | | | | | | | | Granted | | | 670,000 | | | | 3.77 | | | | 4.40 | | | | | | Exercised | | | (213,056 | ) | | | 2.33 | | | | | | | | 624,462 | | Exercised shares forgone to satisfy minimum statutory withholding | | | (51,339 | ) | | | 2.33 | | | | | | | | | | Cashless exercise | | | (184,493 | ) | | | 2.33 | | | | | | | | | | Forfeited | | | (101,946 | ) | | | 3.63 | | | | | | | | | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2019 | | | 2,343,333 | | | $ | 2.99 | | | | 1.81 | | | $ | 12,989,767 | | | | | | | | | | | | | | | | | | | Exercisable at December 31, 2019 | | | 1,501,750 | | | $ | 2.69 | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2017 | | | - | | | $ | - | | | | - | | | $ | - | | | | | | | | | | | | | | | | | | | Granted | | | 125,000 | | | | 2.55 | | | | 5.42 | | | | 111,250 | | Exercised | | | - | | | | - | | | | - | | | | - | | Forfeited | | | - | | | | - | | | | - | | | | - | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2018 | | | 125,000 | | | $ | 2.55 | | | | 5.42 | | | $ | 111,250 | | | | | | | | | | | | | | | | | | | Granted | | | - | | | | - | | | | - | | | | - | | Exercised | | | - | | | | - | | | | - | | | | - | | Forfeited | | | - | | | | - | | | | - | | | | - | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2019 | | | 125,000 | | | $ | 2.55 | | | | 4.42 | | | $ | 747,500 | | | | | | | | | | | | | | | | | | | Exercisable at December 31, 2019 | | | 49,479 | | | $ | 2.55 | | | | | | | | | |
|
Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block] |
| | | | Options Outstanding | | | Options Exercisable | | 2014 Plan (Options): | | | | | | | | | | | | | | | | | | | | | Range of Exercise Prices | | Number of Shares Outstanding | | | Weighted-Average Remaining Contractual Life | | | Weighted-Average Exercise Price | | | Number of Shares Exercisable | | | Weighted- Average Exercise Price | | | | | | | | | | | | | | | | | | | | | | | | | $2.01 | - | $3.00 | | | 1,348,333 | | | | 0.56 | | | $ | 2.36 | | | | 1,106,333 | | | $ | 2.38 | | $3.01 | - | $4.00 | | | 600,000 | | | | 3.53 | | | $ | 3.26 | | | | 316,667 | | | $ | 3.27 | | $4.01 | - | $5.00 | | | 395,000 | | | | 4.40 | | | $ | 4.70 | | | | 78,750 | | | $ | 4.70 | | | | | | | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2019 | | | 2,343,333 | | | | 1.81 | | | $ | 2.99 | | | | 1,501,750 | | | $ | 2.69 | |
|
Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block] |
| | | | | | | Expected volatility | | 36% | to | 38% | | | 35% | to | 49% | | Risk free interest rate | | 1.80% | to | 2.36% | | | 2.43% | to | 2.88% | | Expected lives at date of grant (in years) | | | 4.63 | | | | | 3.83 | | | Weighted average fair value of options granted | | | $1.61 | | | | | $1.00 | | |
|
Share-based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block] |
| | | | | | | Restricted share expense | | $ | 190 | | | $ | 78 | | Stock option and SARs expense | | | 807 | | | | 879 | | Total stock-based compensation expense | | $ | 997 | | | $ | 957 | |
|