This model was contributed by nielsr.