add some features and tested.