add some new features
resolved conflict and rest the author