modify some alg
some role