#18, work on #25 and #20