add method to improve the accuarcy and speed