Migrate codes from 2.5 branch