fixed#2 ,
fixed#4 ,
fixed#6 ,
fixed#7 ,
fixed#9 ,
fixed#10