[add] a lot of improvements