sync 3.0 branch with head