change some functionality. del some bugs