merged changes from Asia's version