add uid generator
refact uid generate