Initial commit

This version is fully revised by Li Rui.