add a lot of function
var 0.8 complate