Authored by hf

code reveiew by fei.hong: do feature 3.2.3 and 3.2.4

This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.