implementing ga finally!