update a lot, more feature, fix bugs