initialized by dengjh