add pricision can improve performance :D