impl CG method