several update (lazy to describe! =D)