updated: a lot feature, iter 40