complete changes for 3e8f48a6cf5047ab1cf3d7e42bea9d81db27a4d2