partially implement GA