Note 11 - Share-based Compensation (Tables)
|
12 Months Ended |
Dec. 31, 2020 |
Notes Tables |
|
Nonvested Restricted Stock Shares Activity [Table Text Block] |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | | | | | | Granted | | | 156,250 | | | | 10.12 | | | | | | Vested | | | (28,432 | ) | | | 9.28 | | | $ | 367,273 | | Vested shares forgone to satisfy minimum statutory withholding | | | (6,818 | ) | | | 9.28 | | | $ | 62,479 | | Forfeitures | | | (2,000 | ) | | | 11.68 | | | | | | Unvested at December 31, 2020 | | | 145,000 | | | $ | 9.78 | | | | | |
|
Share-based Payment Arrangement, Performance Shares, Activity [Table Text Block] |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unvested at December 31, 2019 | | | - | | | | - | | | | | | Granted | | | 232,500 | | | | 9.06 | | | | | | Unvested at December 31, 2020 | | | 232,500 | | | $ | 9.06 | | | | | |
|
Schedule of Share-based Compensation, Employee Stock Purchase Plan, Activity [Table Text Block] |
| | | | | | | Compensation expense | | $ | 108,589 | | | $ | 43,030 | | Shares of stock sold to employees | | | 30,012 | | | | 33,742 | | Weighted average fair value per ESPP award | | $ | 7.43 | | | $ | 3.94 | |
|
Schedule of Nonvested Share Activity [Table Text Block] |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2018 | | | 2,224,167 | | | $ | 2.67 | | | | 3.01 | | | $ | - | | | | | | | | | | | | | | | | | | | 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | Granted | | | 331,000 | | | | 10.38 | | | | 8.59 | | | | | | Exercised | | | (334,184 | ) | | | 2.77 | | | | | | | | 3,135,211 | | Exercised shares forgone to satisfy minimum statutory withholding | | | (125,714 | ) | | | 2.77 | | | | | | | | | | Cashless exercise | | | (164,751 | ) | | | 2.77 | | | | | | | | | | Forfeited | | | (90,336 | ) | | | 3.96 | | | | | | | | | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2020 | | | 1,959,348 | | | $ | 4.26 | | | | 4.42 | | | $ | 28,449,362 | | | | | | | | | | | | | | | | | | | Exercisable at December 31, 2020 | | | 1,362,932 | | | $ | 3.33 | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | | | | | | | | | | | | | | | | | | | Granted | | | - | | | | - | | | | - | | | | - | | Exercised | | | (27,940 | ) | | | 2.55 | | | | - | | | | 242,519 | | Exercised shares forgone to satisfy minimum statutory withholding | | | (12,417 | ) | | | 2.55 | | | | - | | | | - | | Cashless exercise | | | (14,330 | ) | | | 2.55 | | | | - | | | | - | | Forfeited | | | (70,313 | ) | | | 2.55 | | | | - | | | | - | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2020 | | | - | | | $ | - | | | | - | | | $ | - | | | | | | | | | | | | | | | | | | | Exercisable at December 31, 2020 | | | - | | | $ | - | | | | | | | | | |
|
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 | - | | | | 870,011 | | | | 3.20 | | | $ | 2.26 | | | | 784,178 | | | $ | 2.26 | | $3.01 | - | | | | 423,336 | | | | 2.74 | | | $ | 3.23 | | | | 301,669 | | | $ | 3.21 | | $4.01 | - | | | | 335,001 | | | | 5.60 | | | $ | 4.70 | | | | 198,335 | | | $ | 4.70 | | $6.01 | - | | | | 50,000 | | | | 4.21 | | | $ | 6.82 | | | | - | | | $ | - | | $8.01 | - | | | | 20,000 | | | | 9.02 | | | $ | 8.55 | | | | - | | | $ | - | | $11.01 | - | | | | 245,000 | | | | 9.38 | | | $ | 11.07 | | | | 78,750 | | | $ | 11.07 | | $13.01 | - | | | | 16,000 | | | | 9.62 | | | $ | 13.30 | | | | - | | | $ | - | | | | | | | | | | | | | | | | | | | | | | | | | Outstanding at December 31, 2020 | | | 1,959,348 | | | | 4.42 | | | $ | 4.26 | | | | 1,362,932 | | | $ | 3.33 | |
|
Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block] |
Stock Options: | | | | | | | Expected volatility | | 42% | to | 51% | | | 36% | to | 38% | | Risk free interest rate | | 0.20% | to | 1.56% | | | 1.80% | to | 2.36% | | Expected lives at date of grant (in years) | | | 3.25 | | | | | 4.63 | | | Weighted average fair value of options granted | | | $3.87 | | | | | $1.61 | | |
|
Share-based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block] |
| | | | | | | Restricted share expense | | $ | 1,687 | | | $ | 190 | | Stock option and SARs expense | | | 923 | | | | 807 | | Total stock-based compensation expense | | $ | 2,610 | | | $ | 997 | |
|