protected against int overflow