update by hhu