refactored G2