some changes by myself