#20362, #20363, #20095 and minor improvs