update by sennychu