improve alg