Add some feature and fix some bug