enhancement some function