modify id gen function