better gcd using gueards