rewrite analysis about 50%