Merge branch 'taoran' into default
Further improvements. Can (and must) be refined with everyone's ideas.
Merge branch 'default' into claire
Merge branch 'claire' into default
Merge branch 'default' into taoran
further improvement