(c) 2016-2018 Richard DeLong.