Merge #19, #20 and #21