add mysterious function G