more gentle, and solve some bug