(aka shift instead of creating heavyweight BigInteger objects) plus some good ol' caching and gc churn reduction