method A,B,C