with data-dict by ZY, has checked some bugs by GS