gcd recurse
minor changes