Merger the code provide by lvbo chenbo.