Table:
|  | Number of Shares | Weighted Average Exercise Price | Aggregate Intrinsic Value (in thousands) | Weighted Average Remaining Contractual Life |
| --- | --- | --- | --- | --- |
| Stock options outstanding at December 31, 2016 | 1,160,419 | $29.93 | $14,299 |  |
| Granted | 534,030 | $42.90 |  |  |
| Exercised | (463,800) | $29.34 | $7,203 |  |
| Cancelled and expired | (61,241) | $33.80 |  |  |
| Stock options outstanding at December 31, 2017 | 1,169,408 | $35.88 | $16,731 |  |
| Granted | 466,828 | $54.87 |  |  |
| Exercised | (420,524) | $30.05 | $12,411 |  |
| Cancelled and expired | (122,312) | $43.85 |  |  |
| Stock options outstanding at December 31, 2018 | 1,093,400 | $45.34 | $8,776 |  |
| Granted | 489,947 | $63.87 |  |  |
| Exercised | (338,748) | $37.94 | $9,641 |  |
| Cancelled and expired | (108,504) | $51.21 |  |  |
| Stock options outstanding at December 31, 2019 | 1,136,095 | $54.98 | $28,291 | 4 years |
| Stock options exercisable at December 31, 2019 | 290,540 | $44.90 | $10,163 | 3 years |
Paragraphs:
Stock Option Activity - The weighted-average fair value of options granted during the years ended December 31, 2019, 2018 and 2017, as determined under the Black-Scholes-Merton valuation model, was $12.07, $10.42 and $6.75, respectively. Option grants that vested during the years ended December 31, 2019, 2018 and 2017 had a combined fair value of $2.5 million, $1.5 million and $1.7 million, respectively.
The following table summarizes stock option activity for the years ended December 31, 2019, 2018 and 2017:
Question:
What was the weighted average remaining contractual life of the stock options outstanding as of December 31, 2019?
Answer: 4 years