lot of changes.

Signed-off-by: Chen Liang <leungchen921@gmail.com>