Try to avoid remove/add above unchanged part in this PR, it will get the patch big.