join this hanging development into the master

there are a couple of good things in this commit, which should be accepted in the main line.