another method
not check overflow