implemented GA