inprovement some function