refactored structure for G1