new feature and some fix