Some refactors.

Signed-off-by: yushijinhun <yushijinhun@gmail.com>