update learn gcd branch