add some feature;fix bug